我正在阅读RSS提要,并推送标题和链接到一个数组在Jquery。
我做的是
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}); }); });
我再次读取该数组使用
$('#show').click(function(){ $.each(arr,function(index,value){ alert( index +' : '+value); }); });
但它给我输出为
1:[Object Object] 2:[Object Object] 3:[Object Object]
喜欢这个 …
解决方法
JavaScript数组中没有键。使用对象为此目的。
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中,对象实现关联数组的作用。请注意,对象在迭代时没有定义的“排序顺序”(见下文)。
但是,在你的情况下,我真的不清楚为什么你从原始对象(data.news)传输数据。为什么你不简单地传递一个对象的引用?
您可以组合对象和数组以实现可预测的迭代和键/值行为:
var arr = []; $.getJSON("displayjson.PHP",news) { arr.push({ title: news.title,link: news.link }); }); }); // later: $.each(arr,value) { alert( value.title + ' : ' + value.link ); });