2016-07-19 9 views
1

Ich habe das folgende Objekt, das ich aus einer JSON-Datei mit jQuery $ .get erstellt. console.log (Array);Wie konvertiert man ein Objekt zu Array mit jquery

[Object, Object, Object, Object, Object, Object, Object, Object] 
    0 
    : 
    Object 
    country 
    : 
    "Cameroon" 
    employ_count 
    : 
    50 
    __proto__ 
    : 
    Object 
    1 
    : 
    bject 
    7 
    : 
    Object 
    length:8 
    __proto__ 
    : 
    Array[0] 

Ich versuche, jedes Objekt in ein Array dieser Art [ 'Kamerun', 58] zu konvertieren, [ 'Deutschland', 58] ....

Ich habe versucht, mit Jquery $ .makeArray

var array = $.makeArray(emObj); 

aber dies gibt immer noch ein Objekt zurück.

+0

@nnnnnn Tippfehler. Das habe ich korrigiert! –

+0

Können Sie bitte ein Beispiel des ursprünglichen JSON zeigen? (Ist es wie '[{" Land ":" Kamerun "," employ_count ": 50}, {" Land ":" Deutschland "," employ_count ": 58}]'?) Diese Konsole geloggte Version ist ein bisschen schwer zu lesen. ja – nnnnnn

+0

, das ist, was die ursprüngliche sieht aus wie { ' "Länder": [ \t { \t \t "Land": "Kamerun", \t \t "employ_count": 50 \t}, ...]}' –

Antwort

3

Wenn ich Sie richtig verstehe, ist Ihre Eingabe ein Array von Objekten, und die gewünschte Ausgabe ist ein Array von Arrays. Dies ist einfach mit jQuery $.map() method, aber der einzige Grund für diese jQuery zu verwenden, wenn Sie IE unterstützt sind < 9, weil alle modernen Browser die native Array.prototype.map() Methode unterstützen:

var input = { 
 
    "countries": [ 
 
    { "country": "Australia", "employ_count": 22 }, 
 
    { "country": "Cameroon", "employ_count": 50 }, 
 
    { "country": "Germany", "employ_count": 13 } 
 
    ] 
 
}; 
 

 
var output = input.countries.map(function(v) { 
 
    return [v.country, v.employ_count]; 
 
}); 
 

 
var outputWithjQuery = $.map(input.countries, function(v) { 
 
    return [[v.country, v.employ_count]]; 
 
}); 
 

 
console.log(output); 
 
console.log(outputWithjQuery);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>

Hinweis dass das doppelte [[ ... ]] in der jQuery-Version kein Tippfehler ist: Wenn Sie ein Array von der $.map()-Funktion zurückgeben, wird jQuery es abflachen und ein Array von einem Element zurückgeben, das das Array ist, das Sie reparieren wollen. (Die native Methode .map() verfügt nicht über dieses "Feature".)

+0

Funktioniert perfekt. Vielen Dank :) –

1

Sie können dies lösen, ohne eine Bibliotheksabhängigkeit wie jquery zu verwenden.

res.push([elem['country'], Number(elem['employ_count'])]); 

var arr = [{ 
 
    country: "Cameroon", 
 
    employ_count: "58" 
 
}, { 
 
    country: "Germany ", 
 
    employ_count: "50" 
 
}]; 
 

 
function calc(arr) { 
 
    var i, 
 
    len, 
 
    res = []; 
 
    for (i = 0, len = arr.length; i < len; i += 1) { 
 
    elem = arr[i]; 
 
    res.push([elem['country'], Number(elem['employ_count'])]); 
 
    } 
 
    return res; 
 
} 
 
console.log(calc(arr));

+0

@Obasi Ist das wonach Sie gesucht haben? Lassen Sie mich wissen, wenn Sie Änderungen benötigen. – Ayan

+0

Code aktualisiert. Bitte validieren. – Ayan

+0

Hinweis: Die Zahlen im OP-Eingang sind tatsächlich Nummern, so dass Sie 'Number()' nicht aufrufen müssen. – nnnnnn

Verwandte Themen