2016-07-06 7 views
1

Ich fühle mich wie ein Idiot, aber ich muss mein Array filtern und dann diese Werte zuordnen, aber das ist O (2N) und es würde mehr Sinn machen, alles in O (N) zu tun, aber ich kann kein finden Lager Array.prototype FunktionArray-Filter und Karte gleichzeitig?

array.filter(item => !!item.revenue).map(item => item.revenue) 

ich kann meine eigene Methode immer schreiben, aber es wäre am besten, um die Leistung zu verwenden Array.prototype diejenigen optimiert, wenn es einen gibt

+0

fügen Sie den Code der beiden Operationen ein, und wir werden prüfen, wie es in einer Weise geht, ok? – webdeb

+0

Klingt wie Sie wollen eine andere Methode wie reduzieren – epascarello

+1

Lohnt es sich wirklich Lesbarkeit mit einer zusätzlichen Iteration? – zerkms

Antwort

6

Wie wäre es Array.prototype.reduce()?

arr.reduce((newArr, item) => { 
    if (!!item.revenue) { 
     newArr.push(item.revenue) 
    } 
    return newArr 
}, []); 
+0

dang, ich sah reduzieren, aber nicht realisieren, dass Sie ein Array konstruieren können, dachte nur eine einzige Variable, danke – neaumusic

+0

Der Nachteil ist, dass im Gegensatz zu Karte, nicht vor. Weil es nicht wissen kann, wie viele Einträge gefiltert werden. – Oriol

+2

@Oriol "der Nachteil" im Vergleich zu * was *? Sie können das Problem nicht mit nur "Array.prototype.map" lösen. – zerkms

Verwandte Themen