将array
与其他数组值进行比较。我有array
,其值低于。
a = [1,5,6,7,3,8,12];
以下是我需要检查的array
。
b = [3,5,7];
我必须检查a
contains
b
的价值。
function contains(n){
for(var i=0; i<this.length; i++){
if(this[i] == n)
return true;
}
return false;
}
a.contains("12"); //would work
a.contains(b) //check for an array values?
当我传入number
时,上述代码可以正常工作,任何人都可以告诉我如何通过array
然后与另一个array
进行有效比较。
答案 0 :(得分:2)
尝试以下代码。
Array.prototype.equals = function (array, strict) {
if (!array)
return false;
if (arguments.length == 1)
strict = true;
if (this.length != array.length)
return false;
for (var i = 0; i < this.length; i++) {
if (this[i] instanceof Array && array[i] instanceof Array) {
if (!this[i].equals(array[i], strict))
return false;
}
else if (strict && this[i] != array[i]) {
return false;
}
else if (!strict) {
return this.sort().equals(array.sort(), true);
}
}
return true;
}
var arr1 = [1, 2, 3, 4];
var arr2 = [2, 1, 4, 3]; // Loosely equal to 1
var arr3 = [2, 2, 3, 4]; // Not equal to 1
var arr4 = [1, 2, 3, 4]; // Strictly equal to 1
arr1.equals(arr2); // false
arr1.equals(arr2, false); // true
arr1.equals(arr3); // false
arr1.equals(arr3, false); // false
arr1.equals(arr4); // true
arr1.equals(arr4, false); // true
我希望它有所帮助
答案 1 :(得分:1)
我认为您的contains
功能已在Array.prototype
上(因为您使用了this
)。
鉴于此,您只需使用.every()
来迭代b
并测试每个值。
function contains(n){
for(var i=0; i<this.length; i++){
if(this[i] == n)
return true;
}
return false;
}
Array.prototype.contains = contains;
var a = [1,5,6,7,3,8,12];
var b = [3,5,7];
var has_all = b.every(function(val) {
return a.contains(val);
});
alert(has_all);
.every()
方法会在第一个失败的值上短路,如果找到所有值,则会返回true
,否则为false
。
ECMScript 5有一个.indexOf()
方法,所以你可以实际使用它而不是你的函数。
var a = [1,5,6,7,3,8,12];
var b = [3,5,7];
var has_all = b.every(function(val) {
return a.indexOf(val) !== -1;
});
alert(has_all);
答案 2 :(得分:1)
使用prototype属性在每个需要的情况下重用该函数。
Array.prototype.contains = function (n) {
var s;
for(s in this){
if (this.hasOwnProperty(s) && n.indexOf(this[s]) !== -1) {
return true;
}
}
return false;
};
var a = [1, 5, 6, 7, 3, 8, 12],
b = [1, 2, 11];
console.log(a.contains(b));