有没有办法解决这个问题,而不用将这两个数组连接起来来获得具有更高价值的对象?


如要获取具有特定属性的对象,请分别对两个数组使用 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() 并获取具有更高值(成绩)的对象的代码 −

示例

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 }
]

更新时间: 07-9 月 -2020

34 次浏览量

开启你的 事业

完成课程,获得认证

开始
广告
© . All rights reserved.