Как сопоставить индекс массива с индексом подмножества? - PullRequest
0 голосов
/ 03 июня 2018

У меня есть массив N длины.Мне нужно создать новый массив повторяющейся последовательности.Новый массив будет иметь подмножества массивов, которые соответствуют записям в массиве N, например:

N0 = [1,0,0]
N1 = [0,1,0]
N2 = [0,0,1]
N3 = [1,0,0]
N4 = [0,1,0];
reapeat...

ожидаемый результат: [[1,0,0],[0,1,0],[0,0,1],[1,0,0][0,1,0][0,0,1], repeating...]

Я рисую пробел, как это сделать, мойПервая мысль - использовать оператор по модулю индекса каждого элемента

positions = [[98,8097,709], [8,907,098], [234,543w6,098], [098,087,08089], "LOL", {cool: bro}, function(){console.log(derp);}]

positions.map((pos, idx) => {
            if(idx % 1){
              return [1,0,0];              
            }

            if(idx % 2){
            return [0,1,0];
            }

            if(idx % 3){
             return [0,0,1];
            }
          })

Ответы [ 3 ]

0 голосов
/ 03 июня 2018

Хорошо, оставив свой собственный ответ здесь, потому что это не соответствует цели.

Был опубликован ответ, с которого я скопировал это.Это понизили -3 и удалили, я не уверен, кто автор был

> [43,534,76,87,97,89,78,67,7645,6534,54,54,546,657,675,68].map(function(val, idx){ var ret = [0,0,0]; ret[idx % 3] = 1; return ret})
[ [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
  [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
  [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
  [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
  [ 1, 0, 0 ],
  [ 0, 1, 0 ],
  [ 0, 0, 1 ],
  [ 1, 0, 0 ] ]
0 голосов
/ 03 июня 2018

Используя new Array(length).fill(0) в вашем map(), затем по модулю установите 1

let positions = [
  [98, 8097, 709],
  [8, 907, 098],
  [234, '543w6', 098],
  [098, 087, 08089], "LOL", {
    cool: 'bro'
  },
  function() {
    console.log('derp');
  }
]

let res = positions.map((pos, idx) => {
  let subArr = new Array(3).fill(0)
  subArr[idx % 3] = 1
  return subArr
})
console.log(res)
0 голосов
/ 03 июня 2018
const subarrays = [
    [1,0,0],
    [0,1,0],
    [0,0,1],
    [1,0,0],
    [0,1,0]
];

const N = 100;

result = Array.from({length: N}).map((n,idx) => subarrays[idx%subarrays.length])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...