RSS beslemesini okuyorum ve hem Başlığı hem de Bağlantıyı Jquery'de** bir Diziye itiyorum.
Yaptığım şey
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});
});
});
Ve bu diziyi kullanarak tekrar okuyorum
$('#show').click(function(){
$.each(arr, function(index, value){
alert( index +' : '+value);
});
});
Ancak bana Output olarak
1:[Object Object]
2:[Object Object]
3:[Object Object]
Bunun gibi...
Hem tile hem de link'i bir çift olarak nasıl alabilirim (anahtar olarak title ve değer olarak link)
JavaScript dizilerinde anahtar yoktur. Bu amaç için nesneleri kullanın.
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'te, nesneler ilişkisel dizilerin rolünü yerine getirir. Nesneleri yinelerken tanımlanmış bir "sıralama düzenine" sahip olmadıklarını unutmayın (aşağıya bakın).
Ancak, sizin durumunuzda orijinal nesneden (data.news
) neden veri aktardığınız bana pek açık gelmiyor. Neden sadece bu nesneye bir referans aktarmıyorsunuz?
Öngörülebilir yineleme ve anahtar/değer davranışı elde etmek için nesneleri ve dizileri birleştirebilirsiniz:
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 );
});
Bu kod
var title = news.title;
var link = news.link;
arr.push({title : link});
düşündüğünüz şeyi yapmıyor. İtilen şey, "title" adında tek bir üyesi olan ve değer olarak link
içeren yeni bir nesnedir ... gerçek title
değeri kullanılmaz.
İki alanlı bir nesneyi kaydetmek için şöyle bir şey yapmanız gerekir
arr.push({title:title, link:link});
veya son Javascript gelişmeleriyle kısayolu kullanabilirsiniz
arr.push({title, link}); // Note: comma "," and not colon ":"
Bunun yerine bir python tuple'ına en yakın şey
arr.push([title, link]);
Nesnelerinizi veya dizilerinizi arr
dizisine yerleştirdikten sonra, değerleri value.title
ve value.link
olarak veya itilmiş dizi sürümü durumunda value[0]
, value[1]
olarak alabilirsiniz.