Как повторить первый элемент в массиве каждые 2 индекса - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть массив массивов:

[
  ['1', 'a', 'b', 'c', 'd', 'e', ​​'f', 'g', 'h'],
  ['2', 'a', 'b', 'c', 'd', 'e', ​​'f', 'g', 'h'],
  ...
]

, и мне нужно, чтобы первый элемент массивов повторялся каждые 2 позиции в каждом массиве:

[
  ['1', 'a', '1', 'b', '1', 'c', '1', 'd', '1', 'e', ​​'1', 'f', ' 1 ',' g ',' 1 ',' h '],
  ['2', 'a', '2', 'b', '2', 'c', '2', 'd', '2', 'e', ​​'2', 'f', ' 2 ',' g ',' 2 ',' h '],
  ...
]

Как я могу сделать это?

Ответы [ 3 ]

1 голос
/ 22 апреля 2020

Вы можете взять первый элемент из массива и взять Array#flatMap для искомых пар.

const getPaired = ([zero, ...a]) => a.flatMap(v => [zero, v]);

var array = ['1', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'],
    result = getPaired(array);

console.log(...result);
0 голосов
/ 22 апреля 2020

Используйте Array.map() и Array.reduce():

let arr = [
  ['1', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',],
  ['2', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',],
]

let res = arr.map(el => {
    let firstEl
    return el.reduce((acc,cur,idx) => {
        firstEl = idx == 0 ? cur : firstEl
        if(idx > 1){
            acc.push(firstEl)
        }
        acc.push(cur)
        
        return acc
    }, [])
})

console.log(res)
0 голосов
/ 22 апреля 2020

Вы можете установить что-то вроде l oop, например:

for(var i = 0; i < arrayName.length; i++){
    if(i%2 == 0){
        arrayName[i] = arrayName[0];  //puts the first element every 2 index's
    }else{
        //put whatever else needs to be in between
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...