gpt4 book ai didi

javascript - 如何将两个数组与对象合并为一个?

转载 作者:行者123 更新时间:2023-11-28 13:16:28 25 4
gpt4 key购买 nike

我有 2 个数组:

  1. [{姓名:'test',姓氏:'test',性别:'f'},{姓名:'test1',姓氏:'test1',性别:'f'}, {姓名:'test2',姓氏:'test2',性别:'m'}]

  2. [{姓名:'test21',姓氏:'test21',性别:'f'},{姓名:'test1',姓氏:'test1',性别:'f'}, {name:'test2',lastname:'test2',性别:'m'},{name:'test22',lastname:'test22',性别:'m'}]

    <

如何将这些与唯一对象合并到一个数组中(用于唯一检查“名称”)?

最佳答案

filterfind 的组合将起作用

var a = [{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'f'},{name:'test2', lastname: 'test2', gender:'m'}];

var b = [{name:'test21', lastname: 'test21', gender:'f'},{name:'test1', lastname: 'test1', gender:'f'},{name:'test2', lastname: 'test2', gender:'m'},{name:'test22', lastname: 'test22', gender:'m'}];

var c = a.filter(a => b.find(b => b.name === a.name) === undefined).concat(b);

console.table(c);

enter image description here

<小时/>

您还可以创建一个通用的uniqueByKey函数

var uniqueByKey = (key, xs)=>
xs.reduce((ys,x)=>
ys.find(y=> y[key] === x[key]) === undefined
? ys.concat([x])
: ys,
[]);

var a = [{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'f'},{name:'test2', lastname: 'test2', gender:'m'}];

var b = [{name:'test21', lastname: 'test21', gender:'f'},{name:'test1', lastname: 'test1', gender:'f'},{name:'test2', lastname: 'test2', gender:'m'},{name:'test22', lastname: 'test22', gender:'m'}];

var c = uniqueByKey('name', a.concat(b));

console.table(c);

enter image description here

<小时/>

如果您正在处理特别大的数据集,使用 Set 缓存而不是 Array.prototype.find 可能会更好。

var uniqueByKey = (key, xs)=>
xs.reduce(([set, ys], x)=>
set.has(x[key])
? [set, ys]
: [set.add(x[key]), ys.concat([x])]
, [new Set, []]
) [1];

var a = [{name:'test', lastname: 'test', gender:'f'},{name:'test1', lastname: 'test1', gender:'f'},{name:'test2', lastname: 'test2', gender:'m'}];

var b = [{name:'test21', lastname: 'test21', gender:'f'},{name:'test1', lastname: 'test1', gender:'f'},{name:'test2', lastname: 'test2', gender:'m'},{name:'test22', lastname: 'test22', gender:'m'}];

var c = uniqueByKey('name', a.concat(b));

console.table(c);

enter image description here

关于javascript - 如何将两个数组与对象合并为一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37562375/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com