我有一个类型为:
的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);
}
答案 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?