2015-10-27 58 views
2

我想檢查一個函數是否在JavaScript中的函數內的數組中返回true?我只是一個幼樹順便說一句。檢查一個函數是否對數組中的任何項返回true

沒有骰子不幸的是,也許我沒有足夠具體......我想要任何返回true如果有趣標識數組已滿和任何返回false如果數組爲空。

function any(arr, fun){ 
    for (var i=0; i<arr.length; i++) { 
    if (loop(fun)=== 'false')  //<--- this is what I'm not sure about 
    return false; 
    if (arr.length>0); 
    return true; 
    } 
} 
+1

試試這個:'如果(樂趣(ARR [1])===假'')不知道什麼'樂趣'返回,字符串或布爾! – Rayon

+0

我不確定那個函數實際上是什麼樣子,但也許['Array.prototype.every'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array /每個)都有幫助。 – Xufox

+0

你想知道它是否對** any **元素或** ** **元素返回true?你破碎的代碼似乎在檢查每一個,但文字說任何。 – Barmar

回答

1

您可以使用Array.prototype.filter()減少基於函數返回真或假的元素。

var func = function(item) { 
 
    return item === 'hello'; 
 
} 
 
document.write(!!['hello','world','foo','bar'].filter(func).length + '<br>'); 
 
document.write(!!['world','foo','bar'].filter(func).length);

+0

爲什麼不只是'every'? – Xufox

+0

爲什麼不只是'過濾器'? –

+0

只是爲了解決這個問題,爲未來的答案尋求者。 'every'返回true或false,'filter'將返回一個新數組和過濾值。既不改變原始數組。 – gautsch

2

您有一個JS數組功能,它被稱爲一些。您應該像這樣使用它:

arr.some(fun); 

如果對於arr中的任何元素,fun(x)等於true,它將返回true。

+0

你的意思是'every',而不是'some'。 – Xufox

+1

應該是「for ** any ** element」,而不是「for ** each ** element」。 – Barmar

+0

@Xufox他給了這個問題的正確功能,但描述錯誤。 – Barmar

1

您需要調用的函數,並檢查它的結果(不知道應該怎樣循環做的,但它似乎並沒有幫助任何東西):

function any(arr, fun) { 
 
    for (var i = 0; i < arr.length; i++) { 
 
    if (fun(arr[i]) === false) { //assuming the function returns a boolean 
 
     return false; 
 
    } 
 
    } 
 
    return true; // if we get trough the entire array they must've all been true :) 
 
}

你可以還使用Array.every:

arr.every(function(item) { 
 
    return fun(item); 
 
});

0

我想出了這一點:http://jsfiddle.net/rbroden/k5qq4ngy/

var arr = [ 
    false, 
    false, 
    false, 
    true, 
    false]; 

function fun(arrElement){ 
    return arrElement; 
} 

function any(array){ 
    var bool = false; 

    for(i = 0; i < array.length; i++){ 
     if(fun(array[i])) bool = true; 
    } 

    return bool; 
} 

alert(any(arr)); 

基本上

  • 有一個布爾值的佔位符跟蹤,如果條件是有史以來通過滿足

  • 迭代數組傳遞給函數

  • 如果函數返回一個如此,佔位符布爾將在函數結束時更改爲true
  • ,回報布爾函數的結果
相關問題