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)?
In JavaScript-Arrays gibt es keine Schlüssel. Verwenden Sie zu diesem Zweck Objekte.
var obj = {};
$.getJSON("displayjson.php",function (data) {
$.each(data.news, function (i, news) {
obj[news.title] = news.link;
});
});
// later:
$.each(obj, function (index, value) {
alert( index + ' : ' + value );
});
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:
var arr = [];
$.getJSON("displayjson.php",function (data) {
$.each(data.news, function (i, news) {
arr.push({
title: news.title,
link: news.link
});
});
});
// later:
$.each(arr, function (index, value) {
alert( value.title + ' : ' + value.link );
});
Dieser Code
var title = news.title;
var link = news.link;
arr.push({title : link});
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 Wert title
wird nicht verwendet.
Um ein Objekt mit zwei Feldern zu speichern, müssen Sie etwas tun wie
arr.push({title:title, link:link});
oder mit neueren Javascript-Fortschritten können Sie die Abkürzung
arr.push({title, link}); // Note: comma "," and not colon ":"
Das einem Python-Tupel am nächsten kommende wäre stattdessen
arr.push([title, link]);
Sobald Sie Ihre Objekte oder Arrays im arr
-Array haben, können Sie die Werte entweder als value.title
und value.link
oder, im Falle der geschobenen Array-Version, als value[0]
, value[1]
erhalten.