2016-07-26 6 views
-1

kann sagen, ich habe ein Array von ObjektenReturn Objekt mit bestimmten Attributen

var x = [{ 
    a:'asd', 
    b:'ss' 
},{ 
    a:'s', 
    b:'f', 
    c:'asd' 
},{ 
    a:'tt', 
    g:'f', 
    b:'ulaN' 
}]; 

und ich will Array von Objekten zurück, mit Objekten nur a und b Attribute.

Ich löste dies mit

x = x.map(y => { 
    return { 
    a:y.a, 
    b:y.b 
    } 
}); 

aber es scheint nicht ganz efficent meiner Meinung nach, ist es eine bessere Art und Weise, wie dies zu tun?

+10

warum ist das so ineffizient? – JordanHendrix

Antwort

0

Sie könnten sicherlich diesen Code verkürzen, indem Sie:

x = x.map(y => ({ 
    a: y.a, 
    b: y.b 
})); 
+0

Durch ... Entfernen einer neuen Zeile und einer 'return' Anweisung. Ich sehe nicht wirklich, wie das die Frage beantwortet. Auf der anderen Seite bin ich mir nicht ganz sicher, welche Antwort die Frage stellt, da sie im besten Fall sehr vage und breit ist. – vlaz

+0

Stimmen Sie zu, es ist aus Sicht der Code-Leistung nicht effizienter. Es ist nur weniger wortreich. Ich glaube nicht, dass der Code aus Leistungsperspektive leicht effizienter gemacht werden kann, denn egal was du tust, es wird "O (n)" sein, was meines Wissens nicht verbessert werden kann. Da jedes Array-Element ein Objekt (hashmap) ist, ist das Nachschlagen auf einzelnen Schlüsseln "O (1)", und es gibt "n" -Elemente, was "O (n)" bedeutet. Es wird unmöglich sein, dies zu verbessern, da das Lesen eines großen Arrays aus dem Speicher bereits eine O (n) -Zeit benötigt. –

+0

Ja. Der Code könnte weniger ausführlich sein, aber mein Punkt ist, ich denke nicht, dass dies eine separate Antwort verdient hätte. Und das Performance-Zeug ist auch korrekt. Wenn OP nicht angeben kann, was ineffizient ist und warum es verbessert werden muss, glaube ich nicht, dass dies etwas ist, das beantwortet werden kann. Das derzeit beste Szenario ist eine geringfügige Mikrotimisierung, die keine Rolle spielt. – vlaz

Verwandte Themen