2017-06-13 260 views
-2

我創建了一個整數數組,並想知道它是否有一個或多個負值。javascript - 如何檢查數組是否至少有一個負值?

我不想創建for()循環,並檢查數組中的每個元素是正數還是負數,因爲我只想返回一次(例如:我不希望我的函數「返回false」;一百萬次)。

我考慮過的一個選項是將數組中的每個值乘以其倒數的絕對值,所以我得到1或-1的數組(或者如果值爲0,則爲undefined),然後我可以將所有值在第二個數組中查看它是否等於數組的長度。

但是,這種方法的問題是它不佔1/0,也是單調乏味的。我想知道是否有更快的方法來檢查數組是否至少包含一個負值。

--from初學者的JavaScript程序員

+1

看'陣列#some'- –

+0

'常量hasNegative = arr.some(X => X <0);' – Paulpro

+0

另外一個函數只能返回一次。如果您在找到負值時返回false,則該函數將完成並且循環將不會繼續運行。 – Paulpro

回答

-1

什麼用的問題for循環需要返回false所有的時間?

fucntion containsNegative(myArray) 
    for(var i = 0; i < myArray.length(); i++) 
    { 
     if(myArray[i] < 0){ 
      return true; 
     } 
    } 
    return false; 
} 

,如果你想獲得負數

fucntion getNegative(myArray) 
    var count = 0; 
    for(var i = 0; i < myArray.length(); i++) 
    { 
     if(myArray[i] < 0){ 
      count++ 
     } 
    } 
    return count; 
} 
0

這隻會返回值爲1和負發現,一旦打破。

function doesArrayContainNegative(array){ 
 

 
    //if negative is found return true (breaking loop) 
 
    for(var arr of array){ 
 
    \t if(arr < 0) return true; 
 
    } 
 
    
 
//if no elements are negative return false 
 
    return false; 
 
} 
 

 
var array1 = [9, -3, 5, 8] 
 
console.log(doesArrayContainNegative(array1))

4

你可以利用Array.prototype.some如果陣列中的一個項目給定的條件相匹配,這將返回true或false。它也將停止檢查剩餘的值,如果條件的元素相匹配:

let values = [1, 4, 6, -10, -83]; 
let hasNegative = values.some(v => v < 0); 
相關問題