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

รวม 2 Arrays ของ Objects และลบข้อมูลซ้ำจาก Attribute ใน JavaScript

วิธีทำ

ใช้ map() ร่วมกับ find()

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

var details1 = [ 
  { productDetails: { isSold: true, productId:101 } }, 
  { productDetails: { isSold: true, productId:103 } } 
] 
var details2 = [ 
  { productDetails: { isSold: false, productId:101 } } 
] 
var details3 = details1.map(details1Object=>{ 
  var newObject = details2.find(obj=>obj.productDetails.productId === details1Object.productDetails.productId) 
  return newObject ? newObject : details1Object 
}) 
console.log(details3)

วิธีรัน

node fileName.js

ชื่อไฟล์ demo183.js

ผลลัพธ์

PS C:\Users\Amit\javascript-code> node demo183.js 
[ 
  { productDetails: { isSold: false, productId: 101 } }, 
  { productDetails: { isSold: true, productId: 103 } } 
]

คำอธิบาย

details1.map() วนลูปแต่ละ object ใน details1
details2.find() หา object ใน details2 ที่ productId ตรงกัน
ถ้าพบ (newObject ไม่ใช่ undefined) ใช้ object จาก details2 (isSold: false)
ไม่พบ ใช้ object เดิมจาก details1