1

From a 1D array [1,2,3], create a 1D array of all 2D combinations 11,12,13,...32,33. I can do it, it's just a bit ugly. Is there a neater way to write it?

const intArr = [1,2,3];

const data = intArr.map(v1 => 
    intArr.map(v2 => v1 + ',' + v2)
).flat();

d3.select('ul')
    .selectAll('li')
    .data(data)
    .enter()
    .append('li')
    .text(d => d)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/5.7.0/d3.min.js"></script>
<ul></ul>
Ksthawma
  • 1,257
  • 1
  • 16
  • 28

1 Answers1

0
arr.map(n => arr.map(m => '' + n + m)).flat()

is a completely valid way of creating a cartesian product in Javascript. You can also do

arr.flatMap(n => arr.map(m => '' + n + m))
JollyJoker
  • 1,256
  • 8
  • 12