Javascript在数组中设置布尔值是否可以?

时间:2014-01-23 08:01:03

标签: javascript jquery arrays boolean

Javascript问题。

正如标题所说,是否可以将布尔值(truefalse)设置为数组并检查其中任何一个是否在数组中退出?

假设我的函数返回truefalse

示例代码:(使用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!');
}

这似乎工作正常。 但我只是想知道这是否正确......

1 个答案:

答案 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