Computer >> 컴퓨터 >  >> 프로그램 작성 >> JavaScript

JavaScript에서 2D 테이블 형식 데이터 항목을 객체 배열로 변환

<시간/>

다음과 같은 배열의 배열이 있다고 가정합니다 -

const arr = [
   ["Ashley","2017-01-10",80],
   ["Ashley","2017-02-10",75],
   ["Ashley","2017-03-10",85],
    ["Clara","2017-01-10",90],
   ["Clara","2017-02-10",82]
];

이러한 배열을 첫 번째이자 유일한 입력으로 사용하는 JavaScript 함수를 작성해야 합니다.

그런 다음 함수는 입력 배열을 기반으로 객체의 새 배열을 생성해야 합니다. 배열은 입력 배열의 고유한 각 하위 배열에 대한 개체를 포함해야 합니다. (이 컨텍스트에서 고유하다는 것은 첫 번째 요소가 고유한 하위 배열을 의미합니다.)

각 개체에는 다음 스키마가 있어야 합니다. -

const output = [
   {"name":"Ashley", "2017-01-10":80, "2017-02-10":75, "2017-03-10":85},
   {"name":"Clara", "2017-01-10":90, "2017-02-10":82}
];

예시

const arr = [
   ["Ashley","2017-01-10",80],
   ["Ashley","2017-02-10",75],
   ["Ashley","2017-03-10",85],
   ["Clara","2017-01-10",90],
   ["Clara","2017-02-10",82]
];
const groupArray = (arr = []) => {
   let grouped = [];
   grouped = arr.reduce(function (hash) { return function (r, a) {
      if (!hash[a[0]]) {
         hash[a[0]] = {
            name: a[0] };
            r.push(hash[a[0]]);
      }
      hash[a[0]][a[1]] = a[2];
      return r;
   };
}
(Object.create(null)), []);
   return grouped;
}
console.log(groupArray(arr));

출력

콘솔의 출력은 -

[
   { name: 'Ashley',
   '2017-01-10': 80,
   '2017-02-10': 75,
   '2017-03-10': 85
   },
   { name: 'Clara',
   '2017-01-10': 90,
   '2017-02-10': 82 }
]