자바스크립트 2차원 배열 내 특정 값 추출하기!
조회수 4441회
let list = [
[
['firstName', 'Joe'],
['age', 42],
['gender', 'male'],
],
[
['firstName', 'Mary'],
['lastName', 'Jenkins'],
['age', 36],
['gender', 'female'],
],
[
['lastName', 'Kim'],
['age', 40],
['gender', 'female'],
],
];
// 결과 console.log(output); // --> ['Mary Jenkins', 'Kim', 'Joe'];
// 1)나이 기준 오름차순정렬이고,이름과 성이 하나만 있는 경우는 하나만 표기합니다.나이는 전부다르다고 가정..
// 저는 하드코딩 방식으로 풀어서 그런지 list형식이 조금만 변해도 적용이 안 되드라구요.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
2 답변
-
일단 오브젝트의 배열로 정리한 다음에 생각하시죠.
let mapTheList = function (list) { // list 형식이야 어쨌든 전체를 순회하면서 return list.map(function (item) { // 하나의 객체로 만들기로 한다. let obj = {}; // 모두 길이가 2인 배열들로 이루어져 있다고 간주하고 전체를 돌면서 객체에 바로 넣고 for (let i = 0; i < item.length; i++) { let attr = item[i]; obj[attr[0]] = attr[1]; } // 반환한다. return obj; }); }; // 객체들의 배열(array of objects)은 정렬, 필터링 등의 방법이 이미 인터넷에 많이 있습니다. console.log(mapTheList(list));
-
list .map(raw => raw.reduce((obj, [k, v]) => Object.assign(obj, {[k]: v}) , {})) .sort((a, b) => a.age - b.age) .map(({firstName, lastName}) => [firstName, lastName].filter(Boolean).join(' '))
댓글 입력