Javascript问题。
正如标题所说,是否可以将布尔值(true
或false
)设置为数组并检查其中任何一个是否在数组中退出?
假设我的函数返回true
或false
。
示例代码:(使用jQuery)
var abort = [];//make an empty array
function someFunc() {
var returnVal = false;
if( some condition ) {
returnVal = true;
return returnVal;
}
return returnVal;
}
someElement.each(function() {
abort.push( someFunc() ); //push true or false in array
});
//abort array will look eventually something like...
//[true, false, true, false, false, true, ...]
//check if `true` exists in array jQuery approach
var stop = ( $.inArray(true, abort) > -1) ? true : false ;
if( stop ) {
console.log('TRUE FOUND AT LEAST ONE IN ARRAY!');
}
这似乎工作正常。 但我只是想知道这是否正确......
答案 0 :(得分:0)
如果您不想调用所有函数,如果任何函数返回true
,您可以使用这样的原生Array.prototype.some
方法
if (someElement.some(function(currentObject) {
return <a bool value>;
}))) {
console.log("Value exists");
} else {
console.loe("Value doesn't exist");
}
例如,
var someArray = [1,5,6,8,3,8];
if(someArray.some(function(currentObject) {
return currentObject === 3;
})) {
console.log("3 exists in the array");
} else {
console.log("3 does not exist in the array");
}
会打印
3 exists in the array
如果您想执行所有功能而不考虑所有结果,但如果您想知道其中至少有一个返回true
,那么您可以使用Array.prototype.reduce
,就像这样
var someArray = [1,5,6,8,4,8];
function printer(currentObject) {
console.log(currentObject);
return currentObject === 3;
}
if(someArray.reduce(function(result, currentObject) {
return result || printer(currentObject);
}, false)) {
console.log("3 exists in the array");
} else {
console.log("3 does not exist in the array");
}
<强>输出强>
1
5
6
8
4
8
3 does not exist in the array