Что такое элегантный способ соотнести индекс - PullRequest
0 голосов
/ 16 мая 2019

Что такое элегантный способ добавить массив элементов после выбранного индекса?

let arr1 = ["a","b","c"]
let arr2 = ["1","2","3"]

function concat(arr1, arr2, atIndex){
  for(let i = 0; i < arr2.length; i++){
    arr1.splice(atIndex+i, 0, arr2[i]);
  }
  return arr1;
}

concat(arr1, arr2, 2) //  ["a", "b", "1", "2", "3", "c"]
concat(arr1, arr2, 0) //  ["1", "2", "3", "a", "b", "c"]

Ответы [ 4 ]

3 голосов
/ 16 мая 2019

Используйте соединение следующим образом.

let arr1 = ["a","b","c"];
let arr2 = ["1","2","3"];
arr1.splice(1, 0, ...arr2);
console.log(arr1);
1 голос
/ 16 мая 2019

Используйте concat и slice:

let arr1 = ["a", "b", "c"]
let arr2 = ["1", "2", "3"]

function concat(arr1, arr2, atIndex) {
  return arr1.slice(0, atIndex).concat(arr2).concat(arr1.slice(atIndex));
}

console.log(concat(arr1, arr2, 1));
.as-console-wrapper { max-height: 100% !important; top: auto; }
0 голосов
/ 16 мая 2019

Вы можете получить копию из первого массива и соединить расширенный второй массив.

function concat([...arr1], arr2, atIndex){
    arr1.splice(atIndex, 0, ...arr2);
    return arr1;
}

var arr1 = ["a","b","c"],
    arr2 = ["1","2","3"];

console.log(...concat(arr1, arr2, 2)); //  ["a", "b", "1", "2", "3", "c"]
console.log(...concat(arr1, arr2, 0)); //  ["1", "2", "3", "a", "b", "c"]
0 голосов
/ 16 мая 2019

Вы можете передать все элементы в splice(), используя синтаксис расширения.

let arr1 = ["a","b","c"]
let arr2 = ["1","2","3"]

const concat = (a1,a2,ind) => {
    let res = [...a1];
    res.splice(ind,0,...a2);
    return res;
};

console.log(concat(arr1,arr2,1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...