Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.06.2022, 11:42
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Вставить символ после каждого символа в массиве
Нужно поместить 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 после каждого элемента не используя превращение в строку, потом снова в массив...?
Ответить с цитированием
  #2 (permalink)  
Старый 05.06.2022, 11:57
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

NovichokJS,
let arr = [2, 5, 3, 5, 9, 5];
arr = arr.map(a => [a, 1]).flat();
console.log(arr)
Ответить с цитированием
  #3 (permalink)  
Старый 05.06.2022, 12:06
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
NovichokJS,
let arr = [2, 5, 3, 5, 9, 5];
arr = arr.map(a => [a, 1]).flat();
console.log(arr)
ага...точно..понятно. А по поводу вопроса 1) - как превратить?
Ответить с цитированием
  #4 (permalink)  
Старый 05.06.2022, 12:06
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

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));
Ответить с цитированием
  #5 (permalink)  
Старый 05.06.2022, 12:09
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от NovichokJS
А по поводу вопроса 1) -
arr = arr.map(a => +a)
Ответить с цитированием
  #6 (permalink)  
Старый 05.06.2022, 12:16
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Всем спасибо!
Ответить с цитированием
  #7 (permalink)  
Старый 05.06.2022, 13:35
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075


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));

Последний раз редактировалось рони, 05.06.2022 в 16:47.
Ответить с цитированием
  #8 (permalink)  
Старый 05.06.2022, 14:45
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,005

рони,
можно arr[k + 1] = value;, а в цикле k -= 2, а то с тройкой немного сбивает с толку

правда, во время работы цикла будет "массив с дырками", это может приводить к деоптимизациям, насколько я знаю..
Ответить с цитированием
  #9 (permalink)  
Старый 05.06.2022, 16:48
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,075

Сообщение от Alexandroppolus
k -= 2,
ок!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обрезка строки до (после) определенного символа gglmgl Общие вопросы Javascript 5 17.12.2012 17:49
Вставить выводы разных яваскриптов перед и после элемента kulibin Общие вопросы Javascript 11 21.05.2012 10:20
вирезать последни часть, после задаммого символа dadli Общие вопросы Javascript 33 26.02.2012 16:40
Вбор числа после определенного символа в строке Jekel Серверные языки и технологии 2 21.03.2010 13:17
Передача фокуса из формы после ввода символа kuh Общие вопросы Javascript 2 08.03.2009 19:50