2017-06-27 2 views
-3

Ich bin ein Schlüssel/Wert-Objekt namens Obj übergeben, die in eine Liste von Arrays in einem Array (arr [[Schlüssel: Wert] [Schlüssel: Wert]])Objekt in eine Liste von Arrays konvertieren

konvertieren muss
function convertObjectToList(obj) { 
    var arr = []; 
    var i = 0; 
    for(var key in obj){ 
    arr[0][i][0] = key; 
    arr[0][i][1] = obj[key]; 
    i++; 
    } 
    return arr; 
} 
+0

Sie können nicht 'Schlüssel: Wert' in einem Array haben. Was versuchst du wirklich zu bekommen? Zeigt eine Beispieleingabe und (gültige) Ausgabe an. – Barmar

+0

Was ist das Problem? Was ist dein Ziel? –

+0

Es sieht so aus, als würden Sie undefinierte Fehler in dieser Schleife erhalten, da 'arr [0]' 'undefiniert' ist (und so sind auch die Kinder 'arr [0] [i] '' arr [0] [i] [0] ') Sie müssten diese definieren, bevor Sie versuchen, ihre Eigenschaften –

Antwort

-1

Sie könnten Array#map mit Object.keys verwenden und ein neues Objekt für jede Eigenschaft zurückgeben.

function convertObjectToList(object) { 
    return Object.keys(object).map(function (k) { 
     var temp = {}; 
     temp[k] = object[k]; 
     return temp; 
    }); 
} 

ES6

function convertObjectToList(object) { 
    return Object.keys(object).map(k => ({ [k]: object[k] })); 
} 
-2

Sie auf Indizes eines Array-Elements nicht zuordnen können, bis Sie das Array-Element erstellen. Da es keine arr[0] gibt, können Sie arr[0][i] nicht zuweisen. Die Lösung besteht darin, das Array mit einem inneren Array zu initialisieren, das bereits darin enthalten ist.

Für die dritte Ebene können Sie einfach ein Array-Literal verwenden, das Sie keinen Indizes zuweisen müssen. Und Sie können .push() verwenden, um Elemente zu einem Array hinzuzufügen, statt i zu inkrementieren.

function convertObjectToList(obj) { 
    var arr = [[]]; 
    for(var key in obj){ 
    arr[0].push([key, obj[key]]); 
    } 
    return arr; 
} 
Verwandte Themen