如何将键和值都推入Jquery中的数组

我正在阅读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中,对象完成关联数组的作用。 请注意,对象在迭代时没有定义的“sorting顺序”(请参见下文)。

然而 ,在你的情况下,我不清楚为什么你从原始对象( 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}); 

最接近的一个Python元组将是

 arr.push([title, link]); 

一旦你在arr数组中有了你的对象或者数组,你可以获取值为value.titlevalue.link或者在推送数组版本的情况下, value[0]value[1]

我认为你需要定义一个对象,然后推入数组

 var obj = {}; obj[name] = val; ary.push(obj); 
 arr[title] = link; 

您不会入数组,您将使用关键title将元素设置为值link 。 这样你的数组应该是一个对象。

你可能会这样说:

 var unEnumeratedArray = []; var wtfObject = { key : 'val', 0 : (undefined = 'Look, I\'m defined'), 'new' : 'keyword', '{!}' : 'use bracket syntax', ' ': '8 spaces' }; for(var key in wtfObject){ unEnumeratedArray[key] = wtfObject[key]; } console.log('HAS KEYS PER VALUE NOW:', unEnumeratedArray, unEnumeratedArray[0], unEnumeratedArray.key, unEnumeratedArray['new'], unEnumeratedArray['{!}'], unEnumeratedArray[' ']); 

你可以为对象设置一个枚举types,如: ({})[0] = 'txt'; 你可以为数组设置一个键,如: ([])['myKey'] = 'myVal';

希望这可以帮助 :)