반응형


// 특정 문자열을 배열과 객체로 변환하기  - Number.isNaN() 사용해서 숫자 판별

//[1]: 문자열 -> 배열로 -> 객체로 변환
// 이때 --> 최종 객체로 변환시 배열 소요내의 값들 중에서 --> 숫자만 판별해서 변환.

//[2]: 실습
// 문자열
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";

// 배열로 만들기 --> split()
const frag = someStr.split(", ");
console.log(frag);

// 객체로 만들기
const dataObj = [];

// 반복 --> 전통적인 방식
for(let i=0; i < frag.length; i++) {

// 각각의 피스로 쪼개기 --> 역시 배열
  let piece = frag[i].split(" "); // "홍길동 10"
console.log(piece[0], typeof piece[0]); // 홍길동, string
console.log(piece[1], typeof piece[1]); // 10, string
}

-------------------------------------------------------------------------------------------------------------------

const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(", ");

// 객체로 만들기
const dataObj = [];

for(let i=0; i < frag.length; i++) {

// 각각의 피스로 쪼개기 --> 역시 배열
  let piece = frag[i].split(" "); // "홍길동 10"
// console.log(piece[0], typeof piece[0]); // 홍길동, string
// console.log(piece[1], typeof piece[1]); // 10, string
let key = piece[0];
// let value = piece[1];
// console.log(typeof value); // string

// if조건문을 사용하여 piece[1] 요소가 숫자인지를 판별하여 value 값에 세팅 --> Number.isNaN() 사용
let value;
if(!Number.isNaN(Number(piece[1]))) {
value = Number(piece[1]);

else {
value = piece[1];
}

dataObj[key] = value;
}

console.log(dataObj);
console.log(dataObj.강감찬);
console.log(typeof dataObj.강감찬);


-------------------------------------------------------------------------------------------------------------------

const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(", ");

// 객체로 만들기
const dataObj = [];

for(let i=0; i < frag.length; i++) {

// 각각의 피스로 쪼개기 --> 역시 배열
  let piece = frag[i].split(" "); // "홍길동 10"
let key = piece[0];

// if조건문 --> 한줄로 작성 --> 삼항 연산자
let value = Number.isNaN(Number(piece[1])) ? piece[1]: Number(piece[1]);

dataObj[key] = value;
}

console.log(dataObj);
console.log(dataObj.강감찬); // 30 
console.log(typeof dataObj.강감찬); // number

------------------------------------------------------------------------------------------------------------------- 

// 배열로 만들기 
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(', ');
console.log(frag); 

// 객체로 만들기 
const dataObj = [];

// 객체로 만들기
// 반복 --> forEach() 메서드 사용 --> forEach(val[, idx])
frag.forEach(function(val) {

// 할 일 처리 --> return
// 피스별로 각각 쪼개기
let piece = val.split(" ");

// key, value 변수에 담기
let key = piece[0];

// 숫자 판별 --> Number.isNaN()
let value = Number.isNaN(Number(piece[1])) ? piece[1]:Number(piece[1]);

// 객체의 key:value 로 세팅
dataObj[key] = value;
console.log(key, value);
});

------------------------------------------------------------------------------------------------------------------- 

// 배열로 만들기 
const someStr = "홍길동 10, 이순신 20, 강감찬 30, 김유신 40, 을지문덕 50";
const frag = someStr.split(', ');
console.log(frag); 

// 객체로 만들기 
const dataObj = [];

// 객체로 만들기
// 반복 --> forEach() 메서드 사용 --> 화살표 함수 + 구조 분해 할당
frag.forEach(val=> {
let [key, value] = val.split(" ");
value = Number.isNaN(Number(value)) ? value:Number(value); // let 변수 선언해줬으므로 let value 하면 안됨
dataObj[key] = value;
});

// 출력
console.log(dataObj); 
console.log(dataObj.강감찬); // 30  
console.log(typeof dataObj.강감찬); // number










반응형

'개발 및 관리 > Javascript' 카테고리의 다른 글

JSON.stringify 사용  (1) 2023.11.21
map 메서드, reduce 메서드  (0) 2023.11.21
isNan() vs Number.isNaN() 비교  (0) 2023.11.18
find, filter  (0) 2023.11.18
include, join, reverse  (0) 2023.11.18