Bagaimana untuk mendorong kedua kunci dan nilai ke dalam Array di Jquery

Saya membaca RSS feed dan mendorong kedua Judul dan Link ke sebuah Hotel yang di Jquery.

Apa yang saya lakukan adalah

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});
                });                      
            });

Dan saya membaca bahwa array lagi menggunakan

$('#show').click(function(){
                $.each(arr, function(index, value){
                    alert( index +' : '+value);
                });
            });

Tapi itu Memberi saya Output sebagai

1:[Object Object]
2:[Object Object]
3:[Object Object]

seperti ini ...

Bagaimana saya bisa mendapatkan kedua genteng dan link sebagai pasangan ( judul sebagai kunci dan link sebagai nilai)

Larutan

Tidak ada tombol di JavaScript array. Menggunakan benda-benda untuk tujuan itu.

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 );
});

Dalam JavaScript, benda-benda yang memenuhi peran array asosiatif. Diketahui bahwa benda-benda tidak memiliki didefinisikan "urutan" ketika iterasi mereka (lihat di bawah).

Namun, Dalam kasus anda itu tidak benar-benar jelas bagi saya mengapa anda mentransfer data dari objek aslinya (data.news) sama sekali. Mengapa anda tidak hanya lulus referensi untuk yang objek di sekitar?


Anda dapat menggabungkan objek dan array untuk mencapai diprediksi iterasi dan kunci/nilai perilaku:

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 );
});
Komentar (0)

Kode ini

var title = news.title;
var link = news.link;
arr.push({title : link});

tidak melakukan apa yang anda pikir tidak. Apa yang akan didorong adalah objek baru dengan satu anggota yang bernama "judul" dan dengan link dengan nilai ... sebenarnya title nilai tidak digunakan. Untuk menyimpan suatu objek dengan dua bidang yang anda harus melakukan sesuatu seperti

arr.push({title:title, link:link});

atau dengan beberapa Javascript kemajuan anda bisa menggunakan shortcut

arr.push({title, link}); // Note: comma "," and not colon ":"

Hal yang paling dekat dengan python tupel malah akan menjadi

arr.push([title, link]);

Setelah anda memiliki benda-benda atau array dalam arr array anda bisa mendapatkan nilai-nilai, baik sebagai nilai.judul dan nilai.link atau, dalam kasus yang mendorong array versi, sebagai nilai[0], nilai[1].

Komentar (0)

Saya pikir anda perlu untuk mendefinisikan suatu objek dan kemudian mendorong dalam array

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

Anda're tidak mendorong ke dalam array, anda're pengaturan elemen dengan key title nilai link. Seperti array anda harus menjadi sebuah objek.

Komentar (0)

Anda mungkin maksud ini:

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['        ']);

Anda dapat mengatur enumerable untuk sebuah Objek seperti: ({})[0] = 'txt'; dan anda dapat mengatur kunci untuk Array seperti: ([])['myKey'] = 'myVal';

Semoga ini bisa membantu :)

Komentar (0)