如何将键和值都推入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.title
和value.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';
希望这可以帮助 :)