Подтвердить что ты не робот

Добавьте два массива без использования метода concat

Вот пример того, что я хотел бы сделать

function test(r){
  var arr = ['d','e','f'];
  r.push(arr);
  /*
  More Code
  */
  return r;
}
var result = test(['a','b','c']);
alert(result.length);//I want this to alert 6

Что мне нужно сделать, это передать массив и присоединить другие массивы к концу, а затем вернуть массив. Из-за прохождения по ссылке я не могу использовать array.concat(array2);. Есть ли способ сделать это, не используя что-то вроде цикла for, чтобы добавлять элементы один за другим. Я пробовал что-то вроде r.push(arr.join());, но это тоже не сработало. Кроме того, мне бы хотелось иметь объекты с массивами, поэтому r.push(arr.join()); работает не очень хорошо.

4b9b3361

Ответ 1

>>> var x = [1, 2, 3], y = [4, 5, 6];
>>> x.push.apply(x, y) // or Array.prototype.push.apply(x, y)
>>> x
[1, 2, 3, 4, 5, 6]

Альтернативно, используя destructuring, вы можете сделать это

//generate a new array
a=[...x,...y];
//or modify one of the original arrays
x.push(...y);

Ответ 2

function test(r){
  var _r = r.slice(0), // copy to new array reference
      arr = ['d','e','f'];

  _r = _r.concat(arr); // can use concat now

  return _r;
}
var result = test(['a','b','c']);
alert(result.length); // 6

Ответ 3

Это ответ emulbreh, я просто отправляю тест, который я проверил, чтобы проверить его. Все кредиты должны быть отправлены на emulbreh

// original array
var r = ['a','b','c'];

function test(r){
  var arr = ['d','e','f'];
  r.push.apply(r, arr);

  /*
  More Code
  */
  return r;
}
var result = test( r );
console.log( r ); // ["a", "b", "c", "d", "e", "f"]
console.log( result === r ); // the returned array IS the original array but modified