首页 > 解决方案 > 如何使用 .some() 检查数组中是否存在元素?

问题描述

我正在尝试查看数组中是否存在一对特定的数字。我知道 .some() 当它是一个简单的数组时可以有效地工作,但我似乎无法让它在嵌套数组中工作。

先感谢您。

const array = [[1, 0], [2, 0], [3, 1], [4, 3], [5, 2]];

// checks whether an element exists
const exists = (i) => i == [3, 1] || [1, 3];

console.log(array.some(exists));
// expected output: true

标签: javascriptarrays

解决方案


这是一个通用的解决方案。

const array = [[1, 0], [2, 0], [3, 1], [4, 3], [5, 2]];
const expected = [[1, 3], [3, 1]];
const exists = (i) => expected.some((j) => {
    return i.every((k, n) => j[n] === k);
});

console.log(array.some(exists));

这可以包装在一个函数中以使其可重用。

const array = [[1, 0], [2, 0], [3, 1], [4, 3], [5, 2]];
const expected = [[1, 3], [3, 1]];

const containsAny = (array, expected) => {
  return array.some((i) => expected.some((j) => {
    return i.every((k, n) => j[n] === k);
  }))
};


console.log(containsAny(array, expected));

推荐阅读