Čítam zdroj RSS a tlačím názov aj odkaz do poľa v Jquery.
Čo som urobil je
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});
});
});
A čítam toto pole znova pomocou
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Ale dáva mi to výstup ako
1:[Object Object]
2:[Object Object]
3:[Object Object]
takto ...
Ako môžem získať dlažbu aj odkaz ako pár ( názov ako kľúč a odkaz ako hodnota)
V poliach JavaScriptu neexistujú žiadne kľúče. Na tento účel použite objekty.
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 );
});
V jazyku JavaScript plnia objekty úlohu asociatívnych polí. Uvedomte si, že objekty nemajú definované "poradie triedenia" pri ich iterácii (pozri nižšie).
*V tvojom prípade mi však nie je úplne jasné, prečo vôbec prenášaš údaje z pôvodného objektu (data.news
). Prečo jednoducho nepredávate referenciu na tento* objekt?
Objekty a polia môžete kombinovať, aby ste dosiahli predvídateľné iteračné a správanie kľúč/hodnota:
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 );
});
Tento kód
var title = news.title;
var link = news.link;
arr.push({title : link});
nerobí to, čo si myslíte, že robí. Presunie sa nový objekt s jediným členom s názvom "title" a s hodnotou link
... skutočná hodnota title
sa nepoužíva.
Ak chcete uložiť objekt s dvoma poľami, musíte urobiť niečo také
arr.push({title:title, link:link});
alebo s nedávnym pokrokom Javascriptu môžete použiť skratku
arr.push({title, link}); // Note: comma "," and not colon ":"
Najbližšie k pythonovskému tuplu by namiesto toho bolo
arr.push([title, link]);
Keď máte svoje objekty alebo polia v poli arr
, môžete získať hodnoty buď ako value.title
a value.link
alebo, v prípade verzie s tlačeným poľom, ako value[0]
, value[1]
.