我需要检查数组中是否至少有一个元素通过条件。 条件取决于变量。
例如,我正在使用这样的东西:
function condition(previousValue, index, array) {
return additonalValue.indexOf(previousValue) + previousValue.indexOf(additonalValue) < -1;
}
我无法弄清楚如何将“additonalValue”参数传递给array.some(condition)
表达式。
我正在使用jQuery,欢迎使用它。
有没有办法将参数传递给array.some()方法?
答案 0 :(得分:3)
使用闭包看起来像最简单的解决方案:
var additonalValue = 79;
var r = myArray.some(function(previousValue) {
return additonalValue.indexOf(previousValue) + previousValue.indexOf(additonalValue) < -1;
});
答案 1 :(得分:2)
如果要将其他参数传递给放置在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
答案 2 :(得分:1)
some()
函数接受数组形式的其他参数,在回调中设置为this
,因此您可以通过以下方式传递多个值:
var arr = ['one', 'two', 'three'];
var val = 'two';
var r = arr.some(function(value) {
return this[0] == value;
}, [val]);