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

ค้นหาและอัปเดตอาร์เรย์ตามคีย์ใน JavaScript


เรามีอาร์เรย์สองตัวแบบนี้

let arr1 = [{"LEVEL":4,"POSITION":"RGM"},{"LEVEL":5,"POSITION":"GM"},{"LEVEL":5,"POSITION":"GMH"}]
let arr2 = [{"EMAIL":"test1@stc.com","POSITION":"GM"}, {"EMAIL":"test2@stc.com","POSITION":"GMH"}, {"EMAIL":"test3@stc.com","POSITION":"RGM"}, {"EMAIL":"test3@CSR.COM.AU","POSITION":"GM"} ]

เราต้องเขียนฟังก์ชันที่เพิ่มคุณสมบัติ level ให้แต่ละออบเจ็กต์ของ arr2 โดยดึงมาจากออบเจ็กต์ใน arr1 ที่มีค่า property "POSITION" เหมือนกัน

มาเขียนโค้ดสำหรับฟังก์ชันนี้กัน

ตัวอย่าง

let arr1 = [{"LEVEL":4,"POSITION":"RGM"},{"LEVEL":5,"POSITION":"GM"},{"LEVEL":5,"POSITION":"GMH"}]
let arr2 = [{"EMAIL":"test1@stc.com","POSITION":"GM"}, {"EMAIL":"test2@stc.com","POSITION":"GMH"}, {"EMAIL":"test3@stc.com","POSITION":"RGM"}, {"EMAIL":"test3@CSR.COM.AU","POSITION":"GM"} ]
const formatArray = (first, second) => {
  second.forEach((el, index) => {
    const ind = first.findIndex(item => item["POSITION"] === el["POSITION"]);
    if(ind !== -1){
      second[index]["LEVEL"] = first[ind]["LEVEL"];
    };
  });
};
formatArray(arr1, arr2);
console.log(arr2);

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้

[ { EMAIL: 'test1@stc.com', POSITION: 'GM', LEVEL: 5 }, { EMAIL: 'test2@stc.com', POSITION: 'GMH', LEVEL: 5 }, { EMAIL: 'test3@stc.com', POSITION: 'RGM', LEVEL: 4 }, { EMAIL: 'test3@CSR.COM.AU', POSITION: 'GM', LEVEL: 5 } ]