我正在读取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和link这一对(**title为键,link为值)?
在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 );
});
这个代码
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 ":"
最接近于Python元组的方法是
arr.push([title, link]);
一旦你在arr
数组中有了你的对象或数组,你就可以以value.title
和value.link
的形式获得这些值,或者在推送数组的情况下,以value[0]
、value[1]
的形式获得。