创建具有toString函数的javascript对象数组

时间:2015-04-07 18:04:43

标签: javascript arrays ajax object

我有一个类型为:

的javascript对象数组
    var tags = [
        { id: 0, toString: function() { return 'jQuery'; } },
        { id: 1, toString: function() { return 'Python'; } },
    ];

我有一个包含大约100个对象的json。我怎么能动态创建我的tags数组。我尝试了下面的方法,但它没有用。

    var tags = [];
    $.ajax({
        url: baseurl,
        dataType: 'json',
        data: {
            "stime": stime // some variable
            },
        type: "POST",
        success: function(_data){
            if (_data.length>0) {
                for (var i=0; i<_data.length; i++) {
                    var _x = { id: _data[i].id, toString: function() { return ''+_data[i].name; } }
                    tags.push(_x);
                }

1 个答案:

答案 0 :(得分:1)

您在toString函数中使用了i。这意味着所有对象都将访问相同的项目,i超出范围。

你可以改用bind。

toString: function(name) { return name; }.bind(this, _data[i].name)

修改

澄清一下,我是成功结束的一部分。这意味着当调用toString时,我将从成功闭包中获取,然后是_data,然后将使用_data [i]。 这意味着函数将共享相同的i。

另外,_data.ids [i]似乎错了。不应该是_data [i] .id?