我有两个数组。
Array1 = ['cat','dog','elephant','pig']
Array2 = ['cat','scat','pig','spig','bat'].
我需要一个对象,该对象包含键作为Array1
的值,并且值必须是与键相似的相似词。我尝试使用filter
和indexOf
,但似乎不起作用
预期结果:
{
cat: ['cat','scat'],
dog: [],
pig: ['pig','spig']
}
答案 0 :(得分:2)
您可以缩小第一个数组并将其作为结果对象的键,并通过查看值是否包含键来过滤第二个数组。
var array1 = ['cat', 'dog', 'elephant', 'pig'],
array2 = ['cat', 'scat', 'pig', 'spig', 'bat'],
result = array1.reduce((r, k) => {
r[k] = array2.filter(v => v.includes(k));
return r;
}, {});
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 1 :(得分:0)
您可以使用Array1
遍历Array2
并在indexOf
中找到类似的项目。
var result = {};
Array1.forEach(function(item1) {
result[item1] = Array2.filter(function(item2) { return item2.indexOf(item1) > -1; });
});