ในการรับวัตถุที่มีคุณสมบัติเฉพาะ ให้ใช้แนวคิดของ 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 } ]