Aš skaitau RSS kanalą ir stumiu pavadinimą ir nuorodą į masyvą Jquery.
Ką aš padariau
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});
});
});
Ir aš vėl skaitau tą masyvą naudodamas
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Bet jis man duoda išvestį kaip
1:[Object Object]
2:[Object Object]
3:[Object Object]
kaip šis ...
Kaip galiu gauti plytelę ir ryšį kaip porą (pavadinimas kaip raktas ir nuoroda kaip reikšmė)?
"JavaScript" masyvuose nėra raktų. Tam tikslui naudokite objektus.
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 );
});
"JavaScript" sistemoje objektai atlieka asociatyvinių masyvų vaidmenį. Žinokite, kad objektai neturi apibrėžtos "rūšiavimo tvarkos", kai juos iteruojate (žr. toliau).
Tačiau, Jūsų atveju man nėra visiškai aišku, kodėl jūs apskritai perduodate duomenis iš pradinio objekto (data.news
). Kodėl paprasčiausiai neperduodate nuorodos į tą objektą?
Galite sujungti objektus ir masyvus, kad pasiektumėte nuspėjamą iteraciją ir rakto/vertės elgesį:
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 );
});
Šis kodas
var title = news.title;
var link = news.link;
arr.push({title : link});
nedaro to, ką jūs manote, kad daro. Perkeliamas naujas objektas su vienu nariu, pavadintu "title", kurio reikšmė yra link
... tikroji title
reikšmė nenaudojama.
Norėdami išsaugoti objektą su dviem laukais, turite daryti kažką panašaus į
arr.push({title:title, link:link});
arba naudodami naujausius "Javascript" pasiekimus galite naudoti spartųjį klavišą
arr.push({title, link}); // Note: comma "," and not colon ":"
Artimiausias python tuple variantas būtų toks
arr.push([title, link]);
Kai arr
masyve turėsite savo objektus arba masyvus, galite gauti reikšmes kaip value.title
ir value.link
arba, stumiamo masyvo versijos atveju, kaip value[0]
, value[1]
.