#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)
Ответ №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. такое же, как у меня, но выполнено более элегантно.