1. ホーム
  2. jquery

[解決済み] Jqueryで配列にキーと値の両方をプッシュする方法

2022-12-03 03:41:15

質問

読書中 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では、オブジェクトは連想配列の役割を果たします。オブジェクトは反復するときに定義された "ソート順" を持たないことに注意してください(下記参照)。

しかし あなたの場合、なぜ元のオブジェクトからデータを転送するのか、私にはよくわかりません ( 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 );
});