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() ทั้งสองและดึงวัตถุที่มีค่า (เครื่องหมาย) ที่สูงกว่า -

ตัวอย่าง

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