СУШКА Функция, которая умножает массив - PullRequest
0 голосов
/ 28 августа 2018

У меня есть массив из 100 элементов, который я разбил на 10 меньших массивов, чтобы разделить исходные 100 элементов на массив из 400.

Я сейчас использую:

function quadulator(arrChunks){
let a = []; 
let b = [];

    for(var i = 0; i< arrChunks.length;++i){
        a.push(arrChunks[i]);
        a.push(arrChunks[i]);
        b.push(arrChunks[i]);
        b.push(arrChunks[i]);
}  

return a.concat(b);

}
let group1 = quadulator(grid100[0]);
let group2 = quadulator(grid100[1]);
let group3 = quadulator(grid100[2]);
let group4 = quadulator(grid100[3]);
let group5 = quadulator(grid100[4]);
let group5 = quadulator(grid100[5])

let newArr = group1.concat(group2,group3,group4,group5);

Это именно то, что я хочу, но я ищу способ устранить повторение.

Причина, по которой я делю его на несколько частей, состоит в том, что мне нужен элемент индекса 0 из исходного массива, чтобы повторяться в индексах 0,1,20 и 21 нового массива вместе с каждым другой элемент, чтобы следовать этому шаблону.

1 Ответ

0 голосов
/ 28 августа 2018

Вы можете улучшить функцию quadulator, заметив, что a и b одинаковы. Вы можете сразу создать один массив, который будет представлять оба из них с Array.from, а затем дважды распределить этот массив.

Затем с помощью group s вы можете map grid100 с помощью функции quadulator и распределить его в [].concat, чтобы сгладить:

function quadulator(arrChunks) {
  const chunksDoubled = Array.from(
    { length: arrChunks.length * 2 },
    (_, i) => arrChunks[Math.floor(i / 2)]
  );
  return [...chunksDoubled, ...chunksDoubled];
}
const newArr = [].concat(...grid100.map(quadulator));

Демо-версия:

const grid100 = [
  [1, 2, 3, 4],
  [5, 6, 7, 8],
  [9, 10, 11, 12],
  [13, 14, 15, 16]
];
function quadulator(arrChunks) {
  const chunksDoubled = Array.from(
    { length: arrChunks.length * 2 },
    (_, i) => arrChunks[Math.floor(i / 2)]
  );
  return [...chunksDoubled, ...chunksDoubled];
}
const newArr = [].concat(...grid100.map(quadulator));
console.log(newArr);
...