Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

ลบค่าซ้ำใน property ของอาร์เรย์อ็อบเจ็กต์ - JavaScript

อาร์เรย์อ็อบเจ็กต์ที่มี studentMarks บางตัวซ้ำ: [87, 87], [98, 98]

ใช้ map() ร่วมกับ Set ลบค่าซ้ำ

ตัวอย่างโค้ด

var details = [
  { studentName: "John", studentMarks: [78, 98] },
  { studentName: "David", studentMarks: [87, 87] },
  { studentName: "Bob", studentMarks: [48, 58] },
  { studentName: "Sam", studentMarks: [98, 98] },
];

details.map(tempObj => {
  if (typeof (tempObj.studentMarks) == 'object') {
    tempObj.studentMarks = [...new Set(tempObj.studentMarks)];
    if (tempObj.studentMarks.length == 1) {
      tempObj.studentMarks = tempObj.studentMarks[0];
    }
  }
});
console.log(details);

รันด้วยคำสั่ง:

node fileName.js

ชื่อไฟล์: demo292.js

ผลลัพธ์

PS C:\Users\Amit\javascript-code> node demo292.js
[ { studentName: 'John', studentMarks: [ 78, 98 ] }, { studentName: 'David', studentMarks: 87 }, { studentName: 'Bob', studentMarks: [ 48, 58 ] }, { studentName: 'Sam', studentMarks: 98 } ]

คำอธิบาย: new Set(arr) ลบค่าซ้ำ [...set] แปลงกลับเป็นอาร์เรย์ ถ้าเหลือ 1 ค่า แปลงเป็นค่าเดี่ยว (ไม่ใช่อาร์เรย์)

หมายเหตุ: map() ควรคืนค่า แต่โค้ดนี้ mutate ตรงในอ็อบเจ็กต์เดิม (side effect)