Я хотел бы поместить пару массивов данных в массив из 2 измерений в Javascript

#javascript #arrays

#javascript #массивы

Вопрос:

Я хотел бы поместить пару столбцов массивов в массив 2 измерений в Javascript, добавив один столбец в позицию 0 и второй столбец в конце массива.

Начальный массив выглядит примерно так:

 [[1,1,1],
 [1,1,1],
 [1,1,1],
 [1,1,1]]
 

Два массива, которые я хотел бы объединить с двумерным массивом, являются:

 [0,0,0,0]
 

и

 [2,2,2,2]
 

Результат должен быть следующим:

 [[0,1,1,1,2],
 [0,1,1,1,2],
 [0,1,1,1,2],
 [0,1,1,1,2]]
 

Спасибо!

Комментарии:

1. Ты уже что-нибудь пробовал?

2. Привет @Matias. В общем, всегда полезно показать, что вы пробовали сами до сих пор, а что именно не сработало.

3. Привет, у меня уже есть ответ, который я искал. Спасибо вам, ребята! Я буду иметь в виду добавить фрагмент кода с опциями, которые я пробовал в будущих вопросах

Ответ №1:

Если вы на 100% уверены, что длина массивов совпадает, это также можно решить с помощью цикла следующим образом:

 const arr = [[1,1,1],
             [1,1,1],
             [1,1,1],
             [1,1,1]];
const arrBeg = [0,0,0,0];
const arrEnd = [2,2,2,2];

arr.forEach(function (val, ix) {
    val.unshift(arrBeg[ix]);
    val.push(arrEnd[ix]);
});
 

Ответ №2:

Вы можете использовать Array#map и распространять синтаксис для добавления элементов в начало и конец каждого массива.

 const arr = [[1,1,1],
 [1,1,1],
 [1,1,1],
 [1,1,1]];
const start = [0], //supports adding multiple elements,
      end   = [2];
const res = arr.map(x => [...start, ...x, ...end]);
console.log(JSON.stringify(res)); 

Комментарии:

1. Привет @iota, я попробовал ваш код, и он отлично работает при запуске на примере, который я привел в сообщении. Однако я заметил, что этот метод map работает не так, как ожидалось в моем коде. Мне следовало бы добавить более подробное объяснение с фрагментами реального кода.

2. @MatiasCarcamo Можете ли вы привести пример того, что не работает?

3. ваше предложение на самом деле работает просто отлично. Прошу прощения, я новичок в мире программирования, и, похоже, я допустил некоторые ошибки при реализации вашего кода. Спасибо за вашу помощь !! 🙂

4. @MatiasCarcamo Нет проблем.

Ответ №3:

Вы можете сделать это с помощью простого for цикла, подобного этому:

 var arr = [[1,1,1], [1,1,1], [1,1,1], [1,1,1]]
var arr1 = [0, 0, 0, 0];
var arr2 = [2, 2, 2, 2];

var arr1each = 0;
var arr2each = 0;
for (each = 0; each < arr.length; each  ) {
  arr[each].unshift(arr1[arr1each]);
  arr[each].push(arr2[arr2each])
  arr1each  ;
  arr2each  ;
  continue;
}

console.log(arr)
 

Вот Codepen

Ответ №4:

Это базово, но подойдет для того, что вы хотите:

 function alterArray() {
    var testArray = [[1,1,1],[1,1,1],[1,1,1]];
    testArray.forEach( arrayElement => {
        arrayElement.unshift(0);`
        arrayElement.push(2);})   
} 
 

Комментарии:

1. Привет @observer50, я попробовал ваш код, и он отлично работает. Большое спасибо!

2. Пожалуйста! На самом деле. Решение Val R. такое же, как у меня, но выполнено более элегантно.