如何比较多个对象数组,并添加新属性以记录每个对象出现的次数和所在数组的索引?比较对象时需要使用 name
属性。
例子:
var arrays = [
[
{
name: 'aa',
value: 1
},
{
name: 'ab',
value: 2
},
{
name: 'ac',
value: 3
},
{
name: 'aa',
value: 1
}
],
[
{
name: 'aa',
value: 1
},
{
name: 'ab',
value: 2
},
],
[
{
name: 'ac',
value: 3
},
{
name: 'aa',
value: 1
}
]
]
执行后,来自上述数组的对象应具有以下属性:
[
[
{
name: 'aa',
value: 1,
occurrences: 3,
where: [0, 1, 2]
},
{
name: 'ab',
value: 2,
occurrences: 2,
where: [0, 1]
},
{
name: 'ac',
value: 3,
occurrences: 2,
where: [0, 2]
},
{
name: 'aa',
value: 1,
occurrences: 3,
where: [0, 1, 2]
}
],
[
{
name: 'aa',
value: 1,
occurrences: 3,
where: [0, 1, 2]
},
{
name: 'ab',
value: 2,
occurrences: 2,
where: [0, 1]
}
],
[
{
name: 'ac',
value: 3,
occurrences: 2,
where: [0, 2]
},
{
name: 'aa',
value: 1,
occurrences: 3,
where: [0, 1, 2]
}
]
]
基本上,我想检查是否存在具有特定name
属性的对象在其他数组中存在。
这是我想到的解决方案:
1. 循环遍历具有最多对象的数组
2. 循环遍历每个对象
3. 循环遍历其他数组并应用Array.prototype.find()
但是这将花费很多时间,因为我的每个数组都至少有500个对象...