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

รวมอาร์เรย์กับอ็อบเจกต์ที่มีค่าเป็นอาร์เรย์ - JavaScript

สมมติว่าเรามีอาร์เรย์และอ็อบเจกต์ดังนี้:

const arr = [1, 2, 3, 4, 5];
const obj = {
  group1: ["Ram", "Mohan", "Shyam"],
  group2: ["Jai", "Dinesh"],
};

เราต้องทำการ zip อาร์เรย์และอ็อบเจกต์ เพื่อให้ค่าในอาร์เรย์ถูกกำหนดให้กับอ็อบเจกต์ใหม่ที่มี key เป็นค่าในอ็อบเจกต์เดิม

ผลลัพธ์ที่ต้องการ:

const output = {
  group1: {
    "Ram": 1,
    "Mohan": 2,
    "Shyam": 3
  },
  group2: {
    "Jai": 4,
    "Dinesh": 5
  }
};

เราจะวนซ้ำแต่ละสมาชิกในอาร์เรย์และกำหนดค่าให้กับ key ของอ็อบเจกต์ใหม่พร้อมกัน

ตัวอย่าง

โค้ดต่อไปนี้เป็นตัวอย่าง:

const arr = [1, 2, 3, 4, 5];
const obj = {
  group1: ["Ram", "Mohan", "Shyam"],
  group2: ["Jai", "Dinesh"],
};

const zipObject = (arr, obj) => {
  const res = {};
  for(let i = 0; i < arr.length; i++){
    if(obj['group1'][i]){
      if(!res['group1']){
        res['group1'] = {};
      };
      res['group1'][obj['group1'][i]] = arr[i];
    }else{
      if(!res['group2']){
        res['group2'] = {}
      }
      res['group2'][obj['group2'][i - obj['group1'].length]] = arr[i];
    };
  };
  return res;
};

console.log(zipObject(arr, obj));

ผลลัพธ์

จะแสดงผลในคอนโซลดังนี้:

{ group1: { Ram: 1, Mohan: 2, Shyam: 3 }, group2: { Jai: 4, Dinesh: 5 } }