Wie man sowohl Schlüssel als auch Wert in ein Array in Jquery schieben
Ich lese RSS-Feed und schiebe sowohl Titel als auch Link in ein Array in Jquery.
Was ich getan habe ist
var arr = [];
$.getJSON("displayjson.php",function(data){
$.each(data.news, function(i,news){
var title = news.title;
var link = news.link;
arr.push({title : link});
});
});
Und ich lese dieses Array wieder mit
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Aber es gibt mir Ausgabe als
1:[Object Object]
2:[Object Object]
3:[Object Object]
wie dieses ...
Wie kann ich Kachel und Link als Paar erhalten (Titel als Schlüssel und Link als Wert)?
82
3
In JavaScript-Arrays gibt es keine Schlüssel. Verwenden Sie zu diesem Zweck Objekte.
In JavaScript erfüllen Objekte die Rolle von assoziativen Arrays. Beachten Sie, dass Objekte keine definierte "Sortierreihenfolge" haben, wenn sie iteriert werden (siehe unten).
*In Ihrem Fall ist mir allerdings nicht ganz klar, warum Sie überhaupt Daten aus dem ursprünglichen Objekt (
data.news
) übergeben. Warum geben Sie nicht einfach einen Verweis auf das* Objekt weiter?Sie können Objekte und Arrays kombinieren, um ein vorhersehbares Iterations- und Schlüssel/Wert-Verhalten zu erreichen:
Dieser Code
tut nicht das, was Sie denken. Was gepusht wird, ist ein neues Objekt mit einem einzigen Member namens "title" und mit
link
als Wert ... der eigentliche Werttitle
wird nicht verwendet. Um ein Objekt mit zwei Feldern zu speichern, müssen Sie etwas tun wieoder mit neueren Javascript-Fortschritten können Sie die Abkürzung
Das einem Python-Tupel am nächsten kommende wäre stattdessen
Sobald Sie Ihre Objekte oder Arrays im
arr
-Array haben, können Sie die Werte entweder alsvalue.title
undvalue.link
oder, im Falle der geschobenen Array-Version, alsvalue[0]
,value[1]
erhalten.Sie drücken nicht in das Array, Sie setzen das Element mit dem Schlüssel
title
auf den Wertlink
. Als solches sollte Ihr Array ein Objekt sein.