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

더 높은 가치를 가진 객체를 얻기 위해 이 두 배열을 연결하지 않고 이 문제를 해결할 수 있는 방법이 있습니까?


특정 속성을 가진 객체를 가져오려면 두 배열 모두에서 개별적으로 reduce() 개념을 사용합니다. 연결할 필요가 없습니다. 다음이 학생 이름과 학생 표시가 있는 개체라고 가정해 보겠습니다.

var sectionAStudentDetails =
[
   {studentName: 'John', studentMarks: 78},
   {studentName: 'David', studentMarks: 65},
   {studentName: 'Bob', studentMarks: 98}
];
let sectionBStudentDetails =
[
   {studentName: 'John', studentMarks: 67},
   {studentName: 'David', studentMarks: 89},
   {studentName: 'Bob', studentMarks: 97}
];

다음은 둘 다에 reduce()를 구현하고 더 높은 값(marks)을 가진 객체를 가져오는 코드입니다. -

예시

var sectionAStudentDetails =
[
   {studentName: 'John', studentMarks: 78},
   {studentName: 'David', studentMarks: 65},
   {studentName: 'Bob', studentMarks: 98}
];
let sectionBStudentDetails =
[
   {studentName: 'John', studentMarks: 67},
   {studentName: 'David', studentMarks: 89},
   {studentName: 'Bob', studentMarks: 97}
];
function concatTwoArraysWithoutConcatFunction(arrayValues, k) {
   const previousValue = arrayValues[k.studentName];
   if (!previousValue || k.studentMarks >= previousValue.studentMarks)
      arrayValues[k.studentName] = k;
      return arrayValues;
}
const setionA =
sectionAStudentDetails.reduce(concatTwoArraysWithoutConcatFunction, {});
const sectionB = sectionBStudentDetails.reduce(concatTwoArraysWithoutConcatFunction, setionA);
console.log(Object.values(sectionB));

위의 프로그램을 실행하려면 다음 명령을 사용해야 합니다 -

node fileName.js.

여기에서 내 파일 이름은 demo84.js입니다.

출력

이것은 다음과 같은 출력을 생성합니다 -

PS C:\Users\Amit\JavaScript-code> node demo84.js
[
   { studentName: 'John', studentMarks: 78 },
   { studentName: 'David', studentMarks: 89 },
   { studentName: 'Bob', studentMarks: 98 }
]