2017-06-29 5 views
0

Ein Problem mit etwas, das so einfach sein sollte.Erstellen eines neuen jquery-Arrays aus einem JSON-Objekt

Ich habe einen PHP-Skript, das ein JSON-Objekt zurückgibt, die in der Konsole wie folgt aussieht:

[{"CONTAINER_NUMBER":"CONT1234567","RETURN_POOL":"GARDENCITY"},{"CONTAINER_NUMBER":"CONT987654","RETURN_POOL":"NORTHTOWN"}] 

Alles, was ich tun muß, ist ein weiteres Array erstellen, die nur den CONTAINER_NUMBER Wert enthält. Es sollte wie folgt aussehen:

"CONT1234567", "CONT987654" 

ich dies gefunden: http://jsfiddle.net/arunpjohny/ygqaa/

ich es um geändert wie unten aussehen:

$.POST('phpScript.php', {cntArray:cntArray}, function(data) 
{ 
    var containers = JSON.parse(data); 

    var obj = {}; 
    $.each(containers, function(i, v){ 
    obj[v.CONTAINER_NUMBER] 
    }); 
    console.log(obj) 
}); 

Aber die Konsole zeigt nur eine leere Array.

Bitte helfen.

Vielen Dank im Voraus.

+0

Sie ein leeres Objekt bedeuten? –

Antwort

1

Wenn Sie nur ein Objekt, dessen Schlüssel wollen, sind die ID:

obj[v.CONTAINER_NUMBER] sollte obj[v.CONTAINER_NUMBER] = ''

Wenn Sie ein Array von IDs wollen:

$.post('phpScript.php', {cntArray:cntArray}, function(data) 
{ 
    var containers = JSON.parse(data); 

    var ids = []; 
    $.each(containers, function(i, v){ 
    ids.push(v.CONTAINER_NUMBER); 
    }); 
    console.log(ids) 
}); 

Oder ein bisschen sauberer:

$.post('phpScript.php', {cntArray:cntArray}, function(data) 
{ 
    var containers = JSON.parse(data); 

    var ids = $.map(containers, function(i, v){ 
    return v.CONTAINER_NUMBER; 
    }); 
    console.log(ids); 
}); 
+0

Wer auch immer abgelehnt hat - das ist in Ordnung, aber warum? – Brian

+1

Nicht sicher, wer Sie abgelehnt hat, aber Ihre erste Antwort hat für mich funktioniert. Vielen Dank. Ich stimme dir zu und akzeptiere deine Antwort. –

+0

kann ich nur davon ausgehen, dass jQuery dafür völlig unnötig ist? – ste2425

0

Das Problem mit Ihrem Code ist, dass Sie einen Wert übergeben haben den Schlüssel des Objekts!

var x = {} 
x[1] 
x[2] 

So erhalten Sie ein leeres Objekt! Aber wie du schon sagtest, das ist nicht das, wonach du suchst, du willst kein Objekt, sondern ein Array.

Was Sie stattdessen tun können, ist, Karte zu verwenden und alle Werte in einem Array zu erhalten, wie Sie wünschen! Siehe unten:

var json = [{"CONTAINER_NUMBER":"CONT1234567","RETURN_POOL":"GARDENCITY"},{"CONTAINER_NUMBER":"CONT987654","RETURN_POOL":"NORTHTOWN"}] 

var res = json.map((obj) => obj.CONTAINER_NUMBER) 

console.log(res) 

Oder überprüfen Sie die Live-Beispiel

var json = [{"CONTAINER_NUMBER":"CONT1234567","RETURN_POOL":"GARDENCITY"},{"CONTAINER_NUMBER":"CONT987654","RETURN_POOL":"NORTHTOWN"}] 
 

 
var res = json.map((obj) => obj.CONTAINER_NUMBER) 
 

 
console.log(res)

Verwandte Themen