Разбиение массива сгруппированных объектов на два равномерно - PullRequest
0 голосов
/ 27 октября 2018

Допустим, у меня есть массив, который выглядит следующим образом:

var addresses = [[{house: "231 Main", id: "someID"},
                  {house: "233 Main", id: "someID"}],
                 [{house: "440 10th Street", id: "someID"},
                  {house: "443 10th Street", id: "someID"},
                  {house: "450 10th Street", id: "someID"}],
                 [{house: "440 11th Street", id: "someID"}]]

Как я мог бы разделить этот 2-мерный массив на два несколько равномерно сбалансированных массива, основываясь на количестве внутри вложенных массивов? Итак, перейдите от одного массива, содержащего три подмассива с общим количеством шести элементов, к двум массивам, каждый из которых имеет подмассивы с общим количеством трех элементов.

1 Ответ

0 голосов
/ 27 октября 2018

выровнять подмассивы, используя [].concat, и разделить его на два подмассива, используя slice

const addresses = [[{house: "231 Main", id: "someID"},
                  {house: "233 Main", id: "someID"}],
                 [{house: "440 10th Street", id: "someID"},
                  {house: "443 10th Street", id: "someID"},
                  {house: "450 10th Street", id: "someID"}],
                 [{house: "440 11th Street", id: "someID"}]]

const flattened = [].concat(...addresses)
const length = flattened.length

const result = [
  flattened.slice(0, Math.floor(length/2)),
  flattened.slice(Math.floor(length/2))
]

console.log(result)
...