Javascript some()方法和附加参数
我需要检查数组中是否至少有一个元素通过了条件。 条件取决于一个变量 例如,我使用的是这样的东西:Javascript some()方法和附加参数,javascript,jquery,arrays,Javascript,Jquery,Arrays,我需要检查数组中是否至少有一个元素通过了条件。 条件取决于一个变量 例如,我使用的是这样的东西: 函数条件(以前的值、索引、数组){ 返回AdditionalValue.indexOf(previousValue)+previousValue.indexOf(AdditionalValue)
函数条件(以前的值、索引、数组){
返回AdditionalValue.indexOf(previousValue)+previousValue.indexOf(AdditionalValue)<-1;
}
我不知道如何将“additonalValue”参数传递给数组.some(condition)
表达式
我正在使用jQuery,因此,欢迎使用另一种方法
有没有办法将参数传递给数组。some()方法?使用闭包看起来是最简单的解决方案:
var additonalValue = 79;
var r = myArray.some(function(previousValue) {
return additonalValue.indexOf(previousValue) + previousValue.indexOf(additonalValue) < -1;
});
var additonalValue=79;
var r=myArray.some(函数(previousValue){
返回AdditionalValue.indexOf(previousValue)+previousValue.indexOf(AdditionalValue)<-1;
});
函数some()
接受数组形式的附加参数,该数组在回调中设置为this
,因此可以通过这种方式传递许多值:
var arr = ['one', 'two', 'three'];
var val = 'two';
var r = arr.some(function(value) {
return this[0] == value;
}, [val]);
如果要将附加参数传递给
some
方法中的函数,可以使用bind
var myArray = ['a', 'b', 'c', 'd'];
var otherValue = 'e';
function someFunction(externalParameter, element, index, array) {
console.log(externalParameter, element, index, array);
return (element == externalParameter);
}
myArray.some(someFunction.bind(null, otherValue));
这将给你:
e a 0 ["a", "b", "c", "d"]
e b 1 ["a", "b", "c", "d"]
e c 2 ["a", "b", "c", "d"]
e d 3 ["a", "b", "c", "d"]
false
为什么不通过闭包传递它呢?如果要检查数组中的所有值是否匹配,是否应该使用
every()
?对不起,我错了,我需要检查是否有任何元素传递了条件。我将修改这个问题。谢谢:)@dystroy,你建议它怎么做?那么一旦它通过了,你希望返回什么?你命名第一个参数previousValue
的事实有点令人不安,因为有些人的行为。