Вставить символ после каждого символа в массиве
Нужно поместить 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, время: 10:20. |