我有这个数组,如果有一些重合,我想用 array2 的数据替换 array1 的数据,例如从 array1 替换 {"Dates":"05/25/2021","valor ":"0"} array2 {Dates: "05/25/2021", count: "20"} 匹配的数据
array1 = [{Dates:"05/10/2021",count:"0"},{Dates:"05/11/2021",count:"0"},{Dates:"05/12/2021",count:"0"},{Dates:"05/13/2021",count:"0"},{Dates:"05/14/2021",count:"0"},{Dates:"05/15/2021",count:"0"},{Dates:"05/16/2021",count:"0"},{Dates:"05/17/2021",count:"0"},{Dates:"05/18/2021",count:"0"},{Dates:"05/19/2021",count:"0"},{Dates:"05/20/2021",count:"0"},{Dates:"05/21/2021",count:"0"},{Dates:"05/22/2021",count:"0"},{Dates:"05/23/2021",count:"0"},{Dates:"05/24/2021",count:"0"},{Dates:"05/25/2021",count:"0"},{Dates:"05/26/2021",count:"0"},{Dates:"05/27/2021",count:"0"},{Dates:"05/28/2021",count:"0"},{Dates:"05/29/2021",count:"0"},{Dates:"05/30/2021",count:"0"},{Dates:"05/31/2021",count:"0"},{Dates:"06/01/2021",count:"0"},{Dates:"06/02/2021",count:"0"},{Dates:"06/03/2021",count:"0"},{Dates:"06/04/2021",count:"0"},{Dates:"06/05/2021",count:"0"},{Dates:"06/06/2021",count:"0"},{Dates:"06/07/2021",count:"0"},{Dates:"06/08/2021",count:"0"}];
array2 = [{Dates: "05/25/2021", count: "20"},{Dates: "05/26/2021", count: "0"},{Dates: "05/27/2021", count: "3"},{Dates: "05/28/2021", count: "10"},{Dates: "06/07/2021", count: "0"}];
如果有人可以帮助我,我将不胜感激,谢谢
答案 0 :(得分:0)
作为一种天真的方法,我会这样做,这是您要寻找的吗?
for(let i = 0; i < array1.length; i++) {
for(let j = 0; j < array2.length; j++) {
if(array1[i].Dates == array2[j].Dates)
array1[i] = array2[j];
}
}
答案 1 :(得分:0)
结合使用 Array.find
和 Array.forEach
,您可以遍历 array2
并更新 array1
中的匹配对象。
array2.forEach(elm => {
let match = array1.find(x => {
return x.Dates == elm.Dates
});
if(typeof(match) != "undefined")
match.count = elm.count;
});
完整片段:
array1 = [{"Dates":"05/10/2021",count:"0"},{"Dates":"05/11/2021",count:"0"},{"Dates":"05/12/2021",count:"0"},{"Dates":"05/13/2021",count:"0"},{"Dates":"05/14/2021",count:"0"},{"Dates":"05/15/2021",count:"0"},{"Dates":"05/16/2021",count:"0"},{"Dates":"05/17/2021",count:"0"},{"Dates":"05/18/2021",count:"0"},{"Dates":"05/19/2021",count:"0"},{"Dates":"05/20/2021",count:"0"},{"Dates":"05/21/2021",count:"0"},{"Dates":"05/22/2021",count:"0"},{"Dates":"05/23/2021",count:"0"},{"Dates":"05/24/2021",count:"0"},{"Dates":"05/25/2021",count:"0"},{"Dates":"05/26/2021",count:"0"},{"Dates":"05/27/2021",count:"0"},{"Dates":"05/28/2021",count:"0"},{"Dates":"05/29/2021",count:"0"},{"Dates":"05/30/2021",count:"0"},{"Dates":"05/31/2021",count:"0"},{"Dates":"06/01/2021",count:"0"},{"Dates":"06/02/2021",count:"0"},{"Dates":"06/03/2021",count:"0"},{"Dates":"06/04/2021",count:"0"},{"Dates":"06/05/2021",count:"0"},{"Dates":"06/06/2021",count:"0"},{"Dates":"06/07/2021",count:"0"},{"Dates":"06/08/2021",count:"0"}];
array2 = [{Dates: "05/25/2021", count: "20"},{Dates: "05/26/2021", count: "0"},{Dates: "05/27/2021", count: "3"},{Dates: "05/28/2021", count: "10"},{Dates: "06/07/2021", count: "0"}];
array2.forEach(elm => {
let match = array1.find(x => {
return x.Dates == elm.Dates
});
if(typeof(match) != "undefined")
match.count = elm.count;
});
console.log(array1);
答案 2 :(得分:0)
只迭代每个数组一次的方法是使用 Dates 作为键从 array2 创建一个 Map,然后使用 Object.assign() 映射第一个数组。
如果assign方法中的get()未定义(没有存储这样的日期),它将忽略未定义并返回array1对象的原始值。
这避免了使用 find() 或嵌套 for 循环等方法的所有额外数组循环
const a2Map = new Map(array2.map(e => [e.Dates, e]))
const res = array1.map(e => Object.assign({}, e, a2Map.get(e.Dates)));
console.log(res);
<script>
array1 = [{"Dates":"05/10/2021",count:"0"},{"Dates":"05/11/2021",count:"0"},{"Dates":"05/12/2021",count:"0"},{"Dates":"05/13/2021",count:"0"},{"Dates":"05/14/2021",count:"0"},{"Dates":"05/15/2021",count:"0"},{"Dates":"05/16/2021",count:"0"},{"Dates":"05/17/2021",count:"0"},{"Dates":"05/18/2021",count:"0"},{"Dates":"05/19/2021",count:"0"},{"Dates":"05/20/2021",count:"0"},{"Dates":"05/21/2021",count:"0"},{"Dates":"05/22/2021",count:"0"},{"Dates":"05/23/2021",count:"0"},{"Dates":"05/24/2021",count:"0"},{"Dates":"05/25/2021",count:"0"},{"Dates":"05/26/2021",count:"0"},{"Dates":"05/27/2021",count:"0"},{"Dates":"05/28/2021",count:"0"},{"Dates":"05/29/2021",count:"0"},{"Dates":"05/30/2021",count:"0"},{"Dates":"05/31/2021",count:"0"},{"Dates":"06/01/2021",count:"0"},{"Dates":"06/02/2021",count:"0"},{"Dates":"06/03/2021",count:"0"},{"Dates":"06/04/2021",count:"0"},{"Dates":"06/05/2021",count:"0"},{"Dates":"06/06/2021",count:"0"},{"Dates":"06/07/2021",count:"0"},{"Dates":"06/08/2021",count:"0"}];
array2 = [{Dates: "05/25/2021", count: "20"},{Dates: "05/26/2021", count: "0"},{Dates: "05/27/2021", count: "3"},{Dates: "05/28/2021", count: "10"},{Dates: "06/07/2021", count: "0"}];
</script>