Javascript,检查array in是否为另一个数组列表
Javascript, check if array in is another array list
我有一个数组,有几个数组…
现在我想检查数组中是否已经存在一个数组…
arr1 = [0, 0];
arr2 = [[0, 0], [0, 1]]
console.log($.inArray(arr1, arr2));
return : -1
inArray
不行,因为它们是两个不同的对象,即使它们包含相同的值,所以:
console.log([0,0] == [0,0]); //=> false, they're different objects
你必须循环并检查值是否匹配:
var has = false;
for (var i=0; i<arr2.length; i++) {
if (arr2[i][0] === arr1[0] && arr2[i][1] === arr1[1]) {
has = true;
break;
}
}
当然有可能。唯一的问题是你想采取什么方法。
这是一个处理更复杂数组的方法。
function arrayInArray(arr, arrs) {
return arrs.some(function (curr) {
return curr.length === arr.length &&
curr.every(function (_, i) {
return curr[i] === arr[i]
})
})
}
这确保在匹配的数组中有相同数量的项,并且这些项以与原始数组相同的顺序出现。
演示: http://jsfiddle.net/KEKcX/
console.log(arrayInArray([0,0], arr2)); // true
console.log(arrayInArray([0,1], arr2)); // true
console.log(arrayInArray([1,0], arr2)); // false
这是一个遍历数组的泛型函数。
function arrayContains(big, small) {
for (var i = 0; i < big.length; i++) {
if (big[i].length === small.length) {
var j = 0;
while (j < small.length && small[j] === big[i][j]) j++;
if (j === small.length) return true;
}
}
return false;
}
用法:
arr1 = [0, 0];
arr2 = [[0, 0], [0, 1]];
console.log(arrayContains(arr2, arr1)); // true
console.log(arrayContains(arr2, [0, 1])); // true
console.log(arrayContains(arr2, [0, 0, 0])); // false
console.log(arrayContains(arr2, [1, 0])); // false
console.log(arrayContains(arr2, [1, 1])); // false
使用JSON怎么样?做比较的时候要精简吗?
function contains (obj1, obj2) {
for (key in obj1)
if (JSON.stringify(obj1[key]) == JSON.stringify(obj2))
return true;
return false;
}
contains([[0,1], [0,0,1]], [0,1]) // => true
contains({foo: [0,1], bar: [0,0,1]}, [0,1]) // => true
相关文章:
- 如何从另一个带下划线的数组中筛选带元素的数组
- 如何使一个Math.random数组元素比另一个数组元素更有可能被选中
- 将值从for循环(在另一个for循环中)JavaScript中推送到数组
- Javascript:OnChange事件,将数组变量传递给另一个函数
- 如何在另一个函数调用中设置全局数组值
- 如何将LatLng对象与数组中的另一个对象进行比较
- 如何将从另一个文件接收的数组分配给另一个数组
- 如何将数据从一个表导入另一个表(使用数组)
- 如果我知道另一个值,请在多维数组中查找一个值
- 如何按一个仍保持字母顺序的特性值(另一个特性值)对关联数组进行排序
- 将键/值数组中的对象与另一个对象(键/值)进行比较
- 引用函数数组中的另一个函数
- 嗨,我正试图将我的movieprice数组从复选框值传递给另一个计算选择总数的函数,但我的代码没有;t运行
- 我可以'没有找到使用Javascript和HTML将数组的值发送到另一个页面的方法
- 在包含两个的Javascript数组中选择另一个元素
- 如何检查一个数组的值是否与另一数组的值不相等
- 相位P2物理.如何在与另一个碰撞组碰撞时杀死组中的子弹(精灵)
- 在另一个选项组中选择2个清除项目
- 如何使用Javascript和Ajax传递一个HTML选择标签到PHP $_POST与一个(数组)var当名称属性是一个
- 按钮上单击显示另一个按钮组