鍍金池/ 問答/HTML/ 怎么合并兩個數組

怎么合并兩個數組

怎么合并兩個數組呢,把data2里對應id的remark放進data1對應的id這里面,最終效果就是data3這樣

const data1 = [
    { "id": 1, "url": "1111" },
    { "id": 2, "url": "111" },
    { "id": 3, "url": "22222" },
    { "id": 4, "url": "222" },
    { "id": 5, "url": "2222" },
    { "id": 6, "url": "22222是" }
]
const data2 = [
    { "id": 1, "remark": "備注1" },
    { "id": 2, "remark": "備注2" },
    { "id": 3, "remark": "" },
    { "id": 4, "remark": "" },
    { "id": 5, "remark": "" },
    { "id": 6, "remark": "beizhu6" }
]
function fun(arr1, arr2) {
    arr1.map(item => {
        arr2.map(item2 => {
            if (item.id == item2.id) {

            }
        });
    });
    arr2 = [];
    return arr1
}
fun(data1,data2);

data3=[
    { "id": 1, "url": "1111", "remark": "備注1" },
    { "id": 2, "url": "111", "remark": "備注2" },
    { "id": 3, "url": "22222", "remark": "" },
    { "id": 4, "url": "222", "remark": "" },
    { "id": 5, "url": "2222", "remark": "" },
    { "id": 6, "url": "22222是", "remark": "beizhu6" }
]
回答
編輯回答
壞脾滊

基本上只能通過數值映射或者循環(huán)兩個數組來處理

2017年7月3日 15:07
編輯回答
安于心

我來用最好的語言來處理一下這個問題

<?php
$data1 = '[{"id":1,"url":"1111"},{"id":2,"url":"111"},{"id":3,"url":"22222"},{"id":4,"url":"222"},{"id":5,"url":"2222"},{"id":6,"url":"22222是"}]';
$data2 = '[{"id":1,"remark":"備注1"},{"id":2,"remark":"備注2"},{"id":3,"remark":""},{"id":4,"remark":""},{"id":5,"remark":""},{"id":6,"remark":"beizhu6"}]';
$data1 = json_decode($data1,true);
$data2 = json_decode($data2,true);
echo json_encode(array_merge_recursive($data1, $data2));

系統函數輕松搞定

2017年1月24日 23:08
編輯回答
愚念
arr1.forEach((item1,index) => {
    arr1[index] = Object.assign(arr1[index],arr2.filter(item2 => item2.id == item1.id)[0])
})
2017年1月19日 19:20
編輯回答
殘淚
const data3 = []
for (let i = 0; i < data1.length; i++) {
    data3.push({
        ...data1[i],
        ...data2[i],
    })

}
2017年9月10日 09:13
編輯回答
孤客
const data1 = [
    { "id": 1, "url": "1111" },
    { "id": 2, "url": "111" },
    { "id": 3, "url": "22222" },
    { "id": 4, "url": "222" },
    { "id": 5, "url": "2222" },
    { "id": 6, "url": "22222是" }
]
const data2 = [
    { "id": 1, "remark": "備注1" },
    { "id": 2, "remark": "備注2" },
    { "id": 3, "remark": "" },
    { "id": 4, "remark": "" },
    { "id": 5, "remark": "" },
    { "id": 6, "remark": "beizhu6" }
]
let getItemById = id => data2.filter(item => item.id === id)[0]
let dataConcat = data1.map(item => {
  return Object.assign(item, getItemById(item.id))
})
2018年2月26日 12:59
編輯回答
掛念你
data1.map(i => ({ ...i, ...data2.map(o => ({ id: o.id, remark: o.remark })).find(o => o.id === i.id) }))
2017年10月26日 15:00
編輯回答
墻頭草
data1.map(o=>({...o,...data2.filter(v=>v.id===o.id).shift()}))

// 如果兩個數組的結構一定相同:
data1.map((o, i) => ({ ...o, ...data2[i] }))
2018年4月30日 13:17
編輯回答
你好胸
function merge (arr1, arr2) {
  let idToIndex = {}
  arr1.forEach((item, index) => {
    idToIndex[item.id] = index
  })
  arr2.forEach(item => {
    let index = idToIndex[item.id]
    if (index !== undefined) {
      Object.assign(arr1[index], item)
    } else {
      arr1.push(item)
      idToIndex[item.id] = arr1.length - 1
    }
  })
  return arr1
}
2017年6月4日 09:37