2017-06-13 3 views
-2

Ich habe ein Array von Ganzzahlen erstellt und wollte wissen, ob es einen oder mehrere negative Werte enthält.Javascript - Wie überprüft man, ob Array mindestens einen negativen Wert hat?

Ich möchte nicht eine for() Schleife erstellen und prüfen, ob jedes Element im Array positiv oder negativ ist, weil ich nur einmal zurückkehren möchte (zB: Ich möchte nicht, dass meine Funktion "false" zurückgibt;) Millionen mal). Eine Option, die ich in Betracht gezogen habe, war die Multiplikation jedes Wertes im Array mit dem absoluten Wert seines reziproken Werts, sodass ich ein Array von 1s oder -1s (oder undefiniert, wenn der Wert 0 ist) erhalte und dann alle Werte summieren könnte in diesem zweiten Array, um zu sehen, ob es gleich der Länge des Arrays ist.

Allerdings ist das Problem mit dieser Methode nicht 1/0, und es ist auch mühsam. Ich möchte wissen, ob es einen schnelleren Weg gibt zu überprüfen, ob ein Array mindestens einen negativen Wert enthält.

--from Anfänger JavaScript-Programmierer

+1

Blick auf 'Array # some'- –

+0

' const hasNegative = arr.some (x => x <0); ' – Paulpro

+0

auch ein Funktion kann nur einmal zurückkehren. Wenn Sie false zurückgeben, wenn Sie einen negativen Wert finden, wird die Funktion ausgeführt und die Schleife wird nicht weiter ausgeführt. – Paulpro

Antwort

-1

Was das Problem mit der for-Schleife ist, um falsch zurück, um die ganze Zeit?

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

und wenn man die Menge der negativen Zahlen

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

Dieser wird wieder nur 1 Wert und brechen, sobald ein negatives gefunden wird.

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

Sie könnten Array.prototype.some nutzen, die wahr oder falsch zurück, wenn ein Element in dem Array den gegebenen Zustand entspricht. Es wird auch verbleibenden Werte Überprüfung stoppen, wenn die Bedingung ein Element entspricht:

let values = [1, 4, 6, -10, -83]; 
let hasNegative = values.some(v => v < 0); 
Verwandte Themen