使用jquery索引作为json键

时间:2015-08-04 15:32:19

标签: javascript jquery json

我有一个jQuery事件处理程序,单击它时,会根据收藏链接列表创建一个javascript对象:

$('#saveFavorites').on('click', function(){
        alert("Got inside saveFavorites");
        var myFavorites = {id:null, favorites:[]}; 
        myFavorites['id']= someNumber;

        $('#favoritesList').find('a').each(function(i){
            console.log(i + ":" + $(this).html());
            myFavorites['favorites'].push({             
                i:$(this).html()
            });     
        });
        console.log(JSON.stringify(myFavorites));
    });

问题在于我在这里输出:

console.log(i + ":" + $(this).html());

输出是我想要的:

0:Test1
1:Test2

但是当我对对象进行字符串化时:

console.log(JSON.stringify(myFavorites));

我的输出是“i”而不是它代表的字符串化整数。

{"id":"11111111","favorites":[{"i":"Test1"},{"i":"Test2"},{"i":"Test3"},{"i":"Test4"}]}

我假设推功能认为我的i是字符串“i”。有没有办法完成我需要做的事情?

2 个答案:

答案 0 :(得分:1)

尝试

$('#favoritesList').find('a').each(function(i, val){
     console.log(i + ":" + $(this).html());
     myFavorites['favorites'][i] = $(this).html();
});

答案 1 :(得分:0)

想出来。诀窍是在推送之前创建对象:

$('#favoritesList').find('a').each(function(i){
    //console.log(i + ":" + $(this).html());
    var obj = {};
    var id = $(this).attr("id");
    obj[id] = $(this).html();

    myFavorites['favorites'].push(obj);
});