javascript - 如何使用 .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
解决方案
这是一个通用的解决方案。
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));
推荐阅读
- apache-spark - PySpark:在输入到 DataFrame 之前格式化 JSON
- c - 如何在 C 中获取文件系统名称和大小?
- python - 从图创建树结构
- angular - 创建可重用的 HTTP 拦截器库 Angular
- javascript - 谷歌助手输入到 Python 输出
- swift - SpriteKit 非弹性碰撞降低速度
- xcode - 如何在 Visual Studio Mac 中使用旧版本的 Xamarin.iOS?
- arrays - 将元素添加到向量的前面,而不知道它是行向量还是列向量?
- c# - 值类型字符串不能用作默认参数
- xml - Delphi XML 订单