Как конкатировать javascript массив - PullRequest
0 голосов
/ 10 марта 2020
let A = ["u23", "c35",-----so on];

let B = ["123", "234", ---- so on];

оба индекса a и b равны 100 и одинаковы

Ожидаемый результат C = ["u23,123", "c35,234", ---- so on];

Мне нужно добиться результата в очень мало шагов без использования сложных шагов для l oop.

ECMAScript 6 и выше также подойдет.

Ответы [ 2 ]

6 голосов
/ 10 марта 2020

Вы должны l oop хотя бы один раз - другого варианта нет. Это одно из возможных решений:

let A = ["u23", "c35", "d34"];
let B = ["123", "234", "345"];

let C = A.map((el, i) => el + "," + B[i]);
console.log(C);

Приведенное выше решение может быть улучшено с помощью стандарта for-loop:

let C = [];
for (let i = 0; i < 1e6; i++){
  C.push(A[i] + "," + B[i]);
}

, и вы можете улучшить его, изменив один из входных данных массивы вместо создания нового массива:

for (let i = 0; i < 1e6; i++){
  A[i] += "," + B[i];
}

Вы можете сравнить производительность каждого из трех выше в реплее, который я создал здесь.

После Через несколько прогонов вы заметите, что последний метод самый быстрый. Это потому, что во втором примере создан новый массив C, длина которого 0. С каждым .push() массив должен растягиваться, что занимает много времени. В третьем примере у вас уже есть массив с правильным размером, и вы изменяете только его записи.

То, что всегда будет красть время, - это конкатенация строк. Вы можете поиграть с моими решениями, заменив конкатенацию строк простым сложением (в виде чисел), и вы увидите, что это значительно ускоряет операцию. Я надеюсь, что это проливает некоторый свет на вашу проблему.

0 голосов
/ 10 марта 2020
let newArr =[];
A.forEach((el, index)=> {
  newArr.push(el);
  newArr.push(B[index]);
}

Теперь newArr находится в требуемом формате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...