2017-07-13 7 views
-2

Wie kann ich die Anzahl der specif Schlüssel, die einen Wert in einem Array von Objekt hat zählen? für die Ex:Zählen Sie die Anzahl der spezifischen Schlüssel, die einen Wert in einem Array von Objekt hat

myArray = [ {file:null}, {file:hello.jpg}, {file:hai.jpg}, {file:null}] ; 

output = Anzahl der Datei 2. Ausgang ist 2, weil es zwei Dateien in dem Array sind. Hinweis: Ich möchte keine for-Schleife verwenden.

+0

, was Sie für eine Schleife versucht? wenn der myArray [i] nicht null ist? –

+2

Sie haben schon fast identische Frage gestellt. Nehmen Sie meine Antwort von der vorherigen Frage und filtern Sie nur die falschen Werte. –

+2

@Kinduser alle OP brauchen tun ist '.length' zur akzeptierten Antwort hinzufügen, und sie sind fertig. - Ich stimme zu schließen. – evolutionxbox

Antwort

0

Versuchen Sie, diese Kombination von Karte und Filter

myArray = [ {file:null}, {file:'hello.jpg'}, {file:'hai.jpg'}, {file:null}] ; 
 

 
let result = myArray 
 
    .map(x => x.file) 
 
    .filter(x => x != null) // or simply x => x 
 
    .length; 
 
    
 
console.log(result);

+0

Was ist mit '.filter (v => !! v.file) .length'? –

+0

@Kinduser: hängt davon ab, was das OP sucht ... x => x funktioniert auch – georg

+0

@kinduser danke. – kaws

0

Sie können über das Array durchlaufen und überprüfen, ob Datei null ist:

var count = 0; 

for(i in myArray){ 
    if(myArray[i]["file"] != null) 
     count++; 
} 

console.log(count); 
+0

Entschuldigung, ich möchte nicht für die Schleife verwenden. – kaws

+1

@kaws möchten Sie Informationen wie das nächste Mal in Ihre Frage stellen;) – evolutionxbox

+0

true. Ich habe es jetzt getan. – kaws

0

Versuchen for-Schleife und wenn die Bedingung

var myArray = [ {file:null}, {file:'hello.jpg'}, {file:'hai.jpg'}, {file:null}] ; 
 
var length = myArray.length - 1; 
 
var count = 0; 
 

 
for(var x = 0; x < length; x++) { 
 
    if(myArray[x].file !== null) { 
 
    count += 1; 
 
    } 
 
} 
 
console.log('File count is ' + count); 
 

 
console.log('---------------Using array map-------------'); 
 

 
var mapCount = 0; 
 
myArray.map(function(value, index) { 
 
\t if(value.file) 
 
    \t mapCount += 1; 
 
}); 
 

 
console.log('File count is ' + mapCount);

+0

Sorry, ich möchte nicht für die Schleife verwenden. – kaws

+0

@kaws warum nicht? –

+0

@kaws können Sie über for-Schleife auf dieser Website lernen https://www.w3schools.com/js/js_loop_for.asp – PenAndPapers

Verwandte Themen