【问题标题】:JavaScript: How can i check if an array contains elements in common with a second array? [duplicate]JavaScript:如何检查一个数组是否包含与第二个数组相同的元素? [复制]
【发布时间】:2021-03-03 22:04:15
【问题描述】:

将是一个非常简单的问题,

我有这两个数组:

var pcNumbers = [1,2,3,4,5];
var userNumbers = [1,2,7,8,9];

实际上,我必须找到一种方法来创建一个提示“有两个共同元素,1 和 2”

蒂亚

【问题讨论】:

标签: javascript arrays element


【解决方案1】:

您可以通过使用Array.prototype.filter()检查另一个数组中的每一项来过滤一个数组

filter() 方法创建一个新数组,其中包含通过所提供函数实现的测试的所有元素。

Array.prototype.includes()

includes() 方法确定数组是否在其条目中包含某个值,并根据需要返回 truefalse

var pcNumbers = [1,2,3,4,5];
var userNumbers = [1,2,7,8,9];
var commonNumbers = pcNumbers.filter(i => userNumbers.includes(i));
console.log(commonNumbers);

【讨论】:

  • 顺便说一句,不要使用var,而是使用let
  • @ʎzɐɹƆ 如果您不重新分配,请不要使用let。使用const
【解决方案2】:

嗯,这是一个非常简单的问题。

遍历第一个数组并检查每个元素是否出现在第二个数组中。

如果是这样,将其推送到另一个数组或仅显示它。

const a = [1,2,3,4,5,6,7,8,9,10];
const b = [2,4,5,7,11,15];

for(let i of a){
  if(b.includes(i)){
    console.log(i)
  }
}
--------- OR --------------
console.log(a.filter(e => b.includes(e)))

【讨论】:

    【解决方案3】:

    一个快速的解决方案可能是这样的:

    const pcNumbers = [1,2,3,8,5];
    const userNumbers = [1,2,7,8,9];
    const newArr = [];
    
    for (let i = 0; i < pcNumbers.length; i++) {
        for (let j = 0; j < userNumbers.length; j++) {
            if (pcNumbers[i] === userNumbers[j]) {
                newArr.push(pcNumbers[i])
            }
        }
    };
    
    console.log(`These are in common: ${newArr.join(', ')}`)
    

    这将导致:

    这些是共同的:1、2

    【讨论】:

    • [1,2,3,8,5] and [1,2,7,8,9,2]@Emanuel Rista 的预期结果是什么
    • 这将是一个极端情况。在推送之前,您始终可以检查该数字是否在数组中。例如: if (!(pcNumbers[i] in newArr)) { newArr.push(pcNumbers[i]) } - 在这种情况下,您将执行大量循环,更好的解决方案是将数字添加到一个 JS 对象(哈希表)。这将使查找速度更快,但需要一些不同的代码。
    • 所以我只是说这是最有效的解决方案。 :D
    猜你喜欢
    • 2023-03-08
    • 2022-01-02
    • 1970-01-01
    • 2012-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多