Результат двух массивов Создайте новый массив в Javascript - PullRequest
0 голосов
/ 15 октября 2019

Это мои два массива данных:

var array1 = ["test","test1","test2"];
var array2 = ["test3","test4","test5"];

Мне нужно составить массив, чтобы получить следующий результат:

array3["test","test3","test1","test4","test2","test5"]

Как мне заархивировать это?

Ответы [ 4 ]

1 голос
/ 15 октября 2019

Учитывая, что оба массива могут иметь разное количество элементов

var array1 = ["test","test1","test2"];
var array2 = ["test3","test4","test5"];
var maxLength = Math.max(array1.length, array2.length)
var array3 = [];
for (var index=0; index < maxLength; index++) {
    if (index < array1.length)
        array3.push(array1[index]);
    if (index < array2.length)
        array3.push(array2[index]);
}
console.log(array3);
0 голосов
/ 15 октября 2019

Вы можете найти минимальную длину, обработать элемент с индексом меньше минимальной длины, затем присоединить элемент из индекса минимальной длины.

var array1 = ["test","test1","test2","test6"];
var array2 = ["test3","test4","test5"];
var array1_length = array1.length;
var array2_length = array2.length;
var minLength = Math.min(array1_length,array2_length);
var result = [];
for (var index=0; index < minLength; index++){
    result.push(array1[index]);
    result.push(array2[index]);
}
if(array1_length > array2_length){
    result = result.concat(array1.slice(index));
}
if(array2_length > array2_length){
    result = result.concat(array2.slice(index));
}
console.log(result);
0 голосов
/ 15 октября 2019

Я бы порекомендовал array.reduce(), чтобы добиться этого кратко.

let array1 = ["test", "test1", "test2"];
let array2 = ["test3", "test4", "test5"];

const weaveArrays = (array1, array2) => {
  // Only allow arrays of same length
  if (array1.length === array2.length) {
    return array1.reduce((acc, v, i) => {
      acc.push(v, array2[i]);
      return acc;
    }, []);
  } else {
    console.warn('Arrays passed to "weaveArrays" must be of equal length');
    return [];
  }
}

console.log(weaveArrays(array1, array2));
0 голосов
/ 15 октября 2019

Вы можете переставить массивы и сгладить результат.

var array1 = ["test", "test1", "test2"],
    array2 = ["test3", "test4", "test5"],
    result = [array1, array2]
        .reduce((r, a) => a.map((v, i) => [...(r[i] || []), v]), [])
        .reduce((a, b) => a.concat(b));

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