使用jquery索引作为json键

Using jquery index as json key

本文关键字:json jquery 索引 使用      更新时间:2023-09-26

我有一个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"}]}

我假设push函数认为我的I是字符串"I"。有没有办法完成我需要做的事情?

Try

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

明白了。诀窍是在我推送对象之前创建对象:

$('#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);
});