Мне нужно скопировать строку внутри массива в значение внутри другого массива, созданного в цикле. В конце, когда я печатаю, все имена являются последними в массиве имен. Я хочу скопировать/клонировать значение, чтобы у меня не было ссылки, и я бы хотел, чтобы он был только в собственном 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, я пробовал свою собственную функцию клонирования, и ничего не работает, она все равно будет кидать «имя3» для всего expId.
Они не работают:
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 –