我正在阅读RSS feed,并将标题和链接都推入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]
像这样..。
如何将tile和链接作为一对(标题作为关键字,链接作为值)
发布于 2011-01-28 15:38:12
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",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 );
});
发布于 2011-01-28 15:43:53
这段代码
var title = news.title;
var link = news.link;
arr.push({title : link});
并不是在做你想做的事情。推送的是一个新对象,它只有一个名为"title“的成员,值为link
……不使用实际的title
值。要保存包含两个字段的对象,必须执行以下操作
arr.push({title:title, link:link});
或者使用最新的Javascript改进,您可以使用快捷方式
arr.push({title, link}); // Note: comma "," and not colon ":"
相反,如果希望对象的键是变量title
的内容,则可以使用
arr.push({[title]: link}); // Note that title has been wrapped in brackets
发布于 2011-01-28 15:38:33
arr[title] = link;
您并没有推入数组,而是将带有键title
的元素设置为值link
。因此,您的数组应该是一个对象。
https://stackoverflow.com/questions/4825899
复制相似问题