Вставить символ после каждого символа в массиве
Нужно поместить 1 после каждого элемента массива :
[2, 5, 3, 5, 9]; // Output [2, 1, 5, 1, 3, 1, 5, 1, 9, 1]; У меня получилось так, что элементы в скобках:
let arr = [2, 5, 3, 5, 9, 5];
let str = arr.join(1);
let arrRes = str.split('');
console.log(arrRes); // [ '2', '1', '5', '1', '3', '1', '5', '1', '9', '1', '5' ]
1). Как сделать чтобы вернулся массив чисел без скобок? 2). Можно ли сделать чтобы сразу в текущий массив поместить 1 после каждого элемента не используя превращение в строку, потом снова в массив...? |
NovichokJS,
let arr = [2, 5, 3, 5, 9, 5]; arr = arr.map(a => [a, 1]).flat(); console.log(arr) |
Цитата:
|
1) создание нового массива
function inserts(arr, value) {
const r = [];
for (let i = 0; i < arr.length; ++i) {
r.push(arr[i], value);
}
return r;
}
alert(JSON.stringify(inserts([2, 3, 4, 5], 1)));
2) изменение переданного массива
function insertsInPlace(arr, value) {
const len = arr.length;
for (let i = 0; i < len; ++i) {
arr.push(value);
}
for (let i = len - 1; i > 0; --i) {
const t = arr[i];
arr[i] = arr[2*i];
arr[2*i] = t;
}
return arr;
}
const arr = [2, 3, 4, 5];
insertsInPlace(arr, 1);
alert(JSON.stringify(arr));
|
Цитата:
arr = arr.map(a => +a) |
Всем спасибо!
|
:)
function insertsInPlace(arr, value) {
const len = arr.length;
for (let i = len - 1, k = 2 * i; i >= 0; --i, k -= 2) {
arr[k] = arr[i];
arr[k + 1] = value;
}
return arr;
}
const arr = [2, 3, 4, 5];
insertsInPlace(arr, 1);
alert(JSON.stringify(arr));
|
рони,
можно arr[k + 1] = value;, а в цикле k -= 2, а то с тройкой немного сбивает с толку правда, во время работы цикла будет "массив с дырками", это может приводить к деоптимизациям, насколько я знаю.. |
Цитата:
|
| Часовой пояс GMT +3, время: 23:01. |