匹配来自两个数组的相似单词

时间:2019-07-19 07:23:35

标签: javascript jquery

我有两个数组。

Array1 = ['cat','dog','elephant','pig'] 
Array2 = ['cat','scat','pig','spig','bat'].

我需要一个对象,该对象包含键作为Array1的值,并且值必须是与键相似的相似词。我尝试使用filterindexOf,但似乎不起作用

预期结果:

{
  cat: ['cat','scat'],
  dog: [],
  pig: ['pig','spig'] 
}

2 个答案:

答案 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; });
});