2017-01-17 1 views
1

Ich lerne ES6 Destrukturierung und versuchen, verschiedene Möglichkeiten zu finden, ein verschachteltes Array mit 2 Zahlen als Elemente (z. B. X-und Y-Koordinaten) in ein Array von Objekten zu konvertieren nur mit Destrukturierung.ES6: verschachtelte Array in ein Array mit Objekten mit Destrukturierung

const points = [ 
    [4, 5], 
    [3, 12], 
    [9, 30] 
] 

// goal: transfer to this format: 
// [ 
// {}, 
// {}, 
// {} 
// ] 

ein (und wahrscheinlich) die beste Lösung:

points.map(([ x, y ]) => { 
    return { x, y }; 
}); 

ein weiterer Versuch:

points.map(pair => { 
    const x = pair[0], 
    const y = pair[1] 
}); 

// Uncaught SyntaxError: Unexpected token const 

Warum bekomme ich einen Syntax hier?

mit:

points.map(pair => { 
    const [ x, y ] = pair; 
}); 

bekomme ich ein Array mit 3 undefinierten Elementen. Warum?

+0

Das ist eine ungültige Mehrfachzuweisungsanweisung. Sie brauchen das zusätzliche "const" in der zweiten Zuweisung nicht. – haim770

+0

Warum denken Sie, const x = ..., const y = ... wäre eine gültige Syntax? '.map()' muss den neuen Wert zurückliefern, aber Sie geben nur einen Wert im ersten Beispiel und nicht im zweiten oder dritten zurück – Andreas

Antwort

0

In einer Zeile erfolgt die Rückgabe automatisch.

One:

points.map(([ x, y ]) => ({ x, y })); 

Zwei:

points.map(pair => ({x: pair[0], y: pair[1]})); 

oder in mehreren Zeilen:

points.map(pair => { 
    const x = pair[0]; 
    const y = pair[1]; 
    return {x, y}; 
}); 

Drei:

points.map(pair => { 
    const [ x, y ] = pair; 
}); 
+1

Korrektur zu Ihrem ersten Beispiel: sollte 'points.map (([x, y]) => ({x, y})); '. Ohne Klammern wird es als ein Funktionsblock betrachtet, der nichts zurückgibt. –

Verwandte Themen