2014-01-23 56 views
1

Javascript的問題。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!'); 
} 

這似乎工作確定。 但我只是想知道,如果這是正確的方式...

+0

爲什麼你甚至認爲向數組中添加布爾值是不行的?你可以將任何值放入數組中! –

+0

完美無瑕。儘管如此,我會將它縮短到'function somefunc(){return(some condition)}'。更普遍的是:你以後在'abort'中使用了不同的'Boolean'嗎?如果不是,則只需一個全局就足夠了:'someElement.each(function(){if(!stop){stop = someFunc()};});'在這種情況下也替換$ .inArray'。 – virtualnobi

+0

你需要多少布爾值?因爲如果使用少於31個布爾值,單個整數可能會方便使用並且具有很好的性能。例如,你可能會看看我對這個問題的回答:http://stackoverflow.com/questions/18547164/how-to-use-unit8array-in-javascript/18548027#18548027 – GameAlchemist

回答

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 

如果你想不管執行所有的結果的所有功能,但如果你想知道,如果他們的ATLEAST一個返回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 
相關問題