我有一个类型为 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);
}
最佳答案
您在 toString 函数中使用 i 。这意味着所有对象都将访问同一个项目,但 i 超出范围。
您可以使用绑定(bind)来代替。
toString: function(name) { return name; }.bind(this, _data[i].name)
编辑
澄清一下,i 是成功闭包的一部分。这意味着当调用 toString 时,将从 success 闭包中取出 i,然后使用 _data,然后使用 _data[i]。 这意味着函数将共享相同的 i。
另外,_data.ids[i] 似乎是错误的。不应该是_data[i].id吗?
关于javascript - 创建具有 toString 函数的 javascript 对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29498175/