gpt4 book ai didi

javascript - 如何根据每个对象中的字符串属性数组深入比较/匹配数组中的对象?

转载 作者:行者123 更新时间:2023-11-30 13:49:19 24 4
gpt4 key购买 nike

包含对象的数组:

var myArr = [ { user: 'jane', properties: ['prop1', 'prop2'] }
{ user: 'bob', properties: ['prop1', 'prop4'] }
{ user: 'dave', properties: ['prop1', 'prop2', 'prop3'] }
{ user: 'tim', properties: ['prop4', 'prop2', 'prop3'] }
];

有没有一种方法可以使用纯 javascript 或使用 lodash 来获取至少具有一个共同属性的用户?输出应该指出哪个用户与哪个用户匹配,没有重复。

我尝试了很多方法,但不幸的是无法获得所需的输出。

最佳答案

下面的解决方案使用一个Set来判断是否存在匹配的属性,结合一个reduce()操作来输出匹配的用户对:

const array = [{ user: 'jane', properties: ['prop1', 'prop2'] },
{ user: 'bob', properties: ['prop1', 'prop4'] },
{ user: 'dave', properties: ['prop1', 'prop2', 'prop3'] },
{ user: 'tim', properties: ['prop4', 'prop2', 'prop3'] }];

const result = array.reduce((acc, val1, i, arr) => [
...acc,
...arr.slice(i + 1).filter(val2 => {
const properties = [...val1.properties, ...val2.properties];
return new Set(properties).size < properties.length;
}).map(val2 => [val1.user, val2.user])
], []);

console.log(result);

关于javascript - 如何根据每个对象中的字符串属性数组深入比较/匹配数组中的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58586044/

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