Javascript some()方法和附加参数

时间:2014-01-08 14:57:36

标签: javascript jquery arrays

我需要检查数组中是否至少有一个元素通过条件。 条件取决于变量。

例如,我正在使用这样的东西:

function condition(previousValue, index, array) {
    return additonalValue.indexOf(previousValue) + previousValue.indexOf(additonalValue) < -1;
}

我无法弄清楚如何将“additonalValue”参数传递给array.some(condition)表达式。

我正在使用jQuery,欢迎使用它。

有没有办法将参数传递给array.some()方法?

3 个答案:

答案 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]);

FIDDLE