Mam tablicę n długości. Muszę utworzyć nową tablicę powtarzalnej sekwencji. Nowa tablica będzie miała tablice subeset, które odpowiadają wpisom w tablicy N, takich jak:

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

Oczekiwany wyjście: [[1,0,0],[0,1,0],[0,0,1],[1,0,0][0,1,0][0,0,1], repeating...]

Rysuję puste miejsce, jak to zrobić, moja pierwsza myśl jest użycie operatora modulo na indeksie każdego elementu

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];
            }
          })
-1
kevzettler 3 czerwiec 2018, 23:24

3 odpowiedzi

Najlepsza odpowiedź

Używanie new Array(length).fill(0) w map() następnie użyj Modulo, aby ustawić 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)
1
charlietfl 3 czerwiec 2018, 20:45

OK, pozostawiając własną odpowiedź tutaj, ponieważ dostał ten cel

Była odpowiedzialna odpowiedź, z której skopiowałem. Dostał downvoted -3 i usunięty nie jestem pewien, kto był autor

> [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
kevzettler 3 czerwiec 2018, 20:43
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])
-1
Stephen Thomas 3 czerwiec 2018, 20:41