我需要将一个数组中的字符串复制到另一个数组中的循环中创建的值。最后当我打印的时候,所有的名字都是名字数组中的最后一个。我想复制/克隆值,以便我没有参考,我希望它只在没有外部库的本机JavaScript。使用与纯javascript的数组中的闭包
这是我的代码
var exp_names =["name1","name2","name3"];
var i;
for (i = 0; i < exp_names.length; i++) {
d3.tsv("data/"+exp_names[i], function(data) {
data.forEach(function(d){
//Do stuff with my tsv
d.expId = exp_names[i];
});
});
});
然后所有expId是 “NAME3”
数据正确加载每个文件。
我已经尝试过jQuery的扩展函数和lodash的克隆函数,我试过自己的克隆函数并且没有任何作用,它仍然会为所有expId抛出“name3”。
这些没有工作:
var newname = new String(exp_names[i]);
var newname = $.extend(true, {}, exp_names[i]);
var newname = $.extend({}, exp_names[i]);
var newname = _.clone(exp_names[i]);
var newname = exp_names[i].slice(0);
我绝望到现在。
写请您输入数组预期的结果exp_names –