Как правильно вызывать функции внутри цикла forEach?

Привет, извиняюсь за небольшой говнокодец!
Не могу понять, почему код ниже возвращает "a,b2,a,b2,aa,b", вместо "a,b1,a,b2,aa,b"? Если смотреть под отладчиком, сначала в new_array[0] записывается ["a","b1"], а потом, почему-то перезаписывается на значение, которое идёт следующим в цикле forEach.
function splitMultipleRooms(array, j, char) {  
  var new_array=[];
  for (var i=0; i<array.length; i++) {
    var row = array[i];
    row[j].split(char).forEach(function(el) {
      var new_row = row;
      new_row[j] = el;
      new_array.push(new_row);
    });
  };
  return new_array;
};

var array = [['a','b1;b2'], ['aa', 'b']];
var test1 = splitMultipleRooms(array, 1, ';');
alert(test1)


А цель проста: во втором столбце попадаются значения, разделённые знаком ";". Надо делать split по этому символу, а все остальные элементы в строке дублировать.
  • Вопрос задан
  • 192 просмотра
Решения вопроса 1
@migs911 Автор вопроса
Техпис
Спасибо за ответы, код Sayonji помог, хотя я пока так и не понял, почему.
var new_row = row.slice();
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы