如何基于每个对象中的字符串属性数组对数组中的对象进行深层比较/匹配?

欧文·伦基克

具有对象的数组:

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获取具有至少一个共同属性的用户?输出应指示哪个用户与哪个用户匹配,没有重复。

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

罗比·科尼利森(Robby Cornelissen)

以下解决方案使用aSet来确定是否存在匹配的属性,并结合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);

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按字符串值对数组中的对象数组进行排序?

需要基于其他字符串数组对数组对象进行排序并删除不匹配的对象

如何将字符串与对象数组中对象的不同参数进行比较?

如何访问数组中对象的属性并对数组进行排序?

角度过滤器,将重复ng的对象中的字符串数组与字符串数组进行比较,并过滤掉不匹配的对象

将对象数组的日期值与字符串数组中的日期进行比较

根据其字符串属性之一对数组中的对象重新排序?

按对象属性值对数组进行排序,该属性值与第二个数组中的字符串相同

Javascript对象数组,基于部分字符串或子字符串进行搜索匹配

如何在对象数组中查找特定的字符串,在Swift中搜索每个对象?

如何对数组中的对象进行分组

使用基于字符串中的字符的比较器对字符串数组进行排序

JavaScript中基于字符串+数值对对象数组进行排序

如何按顺序按每个对象中的值对数组中对象的索引进行排序

Swift-对数组中每个字符串中的字符进行排序

如何基于对象数组中的属性进行多级过滤

如果对象字符串与单独数组中的字符串匹配,则删除对象

通过键字符串从对象数组中删除属性

从数组中删除属性等于特定字符串的对象

根据Typescript中的字符串属性对对象数组进行排序

通过匹配关键 php 中的字符串对数组中的项目进行分组

将字符串与对象数组进行比较

将对象成员数组与字符串进行比较

如何将数组(即对象数组内部)中的值与对象的属性进行比较?

如何基于属性合并数组中的对象

我如何使数组中对象的每个值都作为字符串

如何比较对象数组中每个对象组中的时间属性

如何根据对象属性对数组中的对象键进行排序?

在 PySpark 2.2 中对数组列的每个元素进行子字符串化