2017-08-30 3 views
1

Ich habe ein Array wie diesezurück, der Minimalwert entspricht

 var data = [ 
     { i: 0, j: 0, day: 5 }, 
     { i: 1, j: 0, day: 3 }, 
     { i: 1, j: 1, day: 5 }, 
     { i: 1, j: 2, day: 10 }, 
     { i: 2, j: 0, day: 5 }, 
     { i: 3, j: 0, day: 5 }, 
     { i: 4, j: 0, day: 6 }, 
     { i: 4, j: 1, day: 10 } 
    ] 

ich eine einzige Reihe von JSON mit mindestens day Wert

Für zB in der obigen Anordnung zurückkehren möchten Mindest day ist 3 und ich will

{ i: 1, j: 0, day: 3 } 

als Ausgabe erhalten

Ich habe diese Methode versucht

Math.min.apply(Math,data.map(function(item){return item.day})) aber es gibt nur die minimale day

Eine Lösung, die ich gefunden indexOf Methode verwendet, aber ich glaube, es ist nicht eine gute Praxis. Gibt es irgendeine Abkürzung?

Antwort

5

Sie könnten Array#reduce verwenden und das Element mit der kleineren day-Eigenschaft zurückgeben.

Für leere Felder, müssen Sie einen Scheck im Voraus, weil

ohne einen Anfangswert auf ein leeres Array aufrufen reduzieren, ist ein Fehler.

var data = [{ i: 0, j: 0, day: 5 }, { i: 1, j: 0, day: 3 }, { i: 1, j: 1, day: 5 }, { i: 1, j: 2, day: 10 }, { i: 2, j: 0, day: 5 }, { i: 3, j: 0, day: 5 }, { i: 4, j: 0, day: 6 }, { i: 4, j: 1, day: 10 }], 
 
    result = data.reduce(function (a, b) { 
 
     return a.day < b.day ? a : b; 
 
    }); 
 
    
 
console.log(result);

Verwandte Themen