给定多个 JavaScript 字符串值数组,找到在 all 中相同出现的元素 数组。例如:
<code class="javascript">var arr1 = ['apple', 'orange', 'banana', 'pear', 'fish', 'pancake', 'taco', 'pizza']; var arr2 = ['taco', 'fish', 'apple', 'pizza']; var arr3 = ['banana', 'pizza', 'fish', 'apple'];</code>
预期输出:
<code class="javascript">['apple', 'fish', 'pizza']</code>
要找到匹配的元素,我们可以使用数组方法的组合:
<code class="javascript">const arrays = [arr1, arr2, arr3]; const result = arrays.shift().filter((v) => { return arrays.every((a) => { return a.indexOf(v) !== -1; }); });</code>
步骤:
通过迭代地将这个逻辑应用于每个数组,我们可以有效地找到在 所有 提供的数组中相同出现的元素。
重复元素处理:
提供的解决方案假设数组不包含重复元素。如果是这样,您可以按如下方式修改代码:
<code class="javascript">const result = arrays.shift().reduce((res, v) => { if (res.indexOf(v) === -1 && arrays.every((a) => { return a.indexOf(v) !== -1; })) res.push(v); return res; }, []);</code>
此代码使用 .reduce() 而不是 .filter()。它检查结果数组中的重复项,并仅添加每个数组中存在的唯一元素。
任意数量的数组:
该解决方案旨在与未知数量的数组。通过使用 arrays.shift(),我们可以顺序比较第一个数组和其余数组,直到处理完所有数组。
以上是如何在多个 JavaScript 数组中查找匹配元素?的详细内容。更多信息请关注PHP中文网其他相关文章!