2017-03-13 3 views
0

ich noch eine Frage über verschachtelte Funktionen habePush-Array von Funktion, die in einer anderen Funktion stellt

Wie kann ich b Array erhalten, die enthält [1, 2, 3] hier:

function someFunc() { 
 
    const a = [{ 
 
    id: 1 
 
    }, { 
 
    id: 2 
 
    }, { 
 
    id: 3 
 
    }] 
 
    const b = [] 
 
    
 
    function someOtherFunc() { 
 
    a.forEach(i => { 
 
     b.push(i.id) 
 
    }) 
 
    } 
 
    return b 
 
} 
 

 
console.log(someFunc())

+2

Sie anrufen, nicht 'someOtherFunc' überall ... – Neutrosider

Antwort

3

Sie erhalten ein leeres Array, weil die someOtherFunc-Funktion nicht ausgeführt wurde.

function someFunc() { 
 
    const a = [{ id: 1}, { id: 2 }, { id: 3 }]; 
 
    let b = []; 
 
    
 
    someOtherFunc(); 
 
    
 
    function someOtherFunc() { 
 
    a.forEach(i => { 
 
     b.push(i.id) 
 
    }) 
 
    } 
 
    return b 
 
} 
 

 
console.log(someFunc())

Oder schnellere Lösung, mit Array#map.

function someFunc() { 
 
    console.log([{ id: 1 }, { id: 2 }, { id: 3 }].map(v => v.id)); 
 
} 
 

 
someFunc();

+2

lohnen könnte zu erwähnen, dass' Rückkehr a.map (...) 'würde hier viel effizienter sein. – mhodges

+0

@mhodges Wenn Sie so sagen ... –

+0

Nein. Ich meinte vollständig 'someOtherFunc()' und 'b' insgesamt entfernen ... Diese Funktion kann 2 Zeilen lang sein – mhodges

Verwandte Themen