Отображение массива объектов в динамический массив массивов - PullRequest
0 голосов
/ 05 июля 2018

У меня есть массив объектов, и я хотел бы получить массив массивов комбинации, показанной здесь [x, y, value]. Предел y будет равен 500, а затем x будет увеличиваться на 1, а y снова должен начинаться с 0.

Example: [0,0, 112] [0,1,75]...[0,500,42]
         [1,0,54] [1,1,98]...[1,500,67]

Таким образом, общее количество массивов в основных массивах должно быть равно длине массива объектов.

[{
    color: "red",
    value: "112"
  },
  {
    color: "green",
    value: "75"
  },
  {
    color: "blue",
    value: "19"
  },
  {
    color: "cyan",
    value: "20"
  },
  {
    color: "magenta",
    value: "47"
  },
  {
    color: "yellow",
    value: "68"
  },
  {
    color: "black",
    value: "75"
  }
]

Это только примерные данные, но мои данные являются динамическими, которые могут пересекать 3000+ значений.

Формат для массива массивов здесь .

Пожалуйста, совет.

1 Ответ

0 голосов
/ 05 июля 2018

Вот довольно простая реализация. В основном переберите содержимое массива, а затем проверьте, является ли его мод 500 = 0, и если да, то увеличьте свой счетчик. Обратите внимание, у меня есть счетчик, начинающийся с -1, потому что на первой итерации, когда i = 0, i % 500 == 0 оценивается как true.

var sampleData = [{
    color: "red",
    value: "112"
  },
  {
    color: "green",
    value: "75"
  },
  {
    color: "blue",
    value: "19"
  },
  {
    color: "cyan",
    value: "20"
  },
  {
    color: "magenta",
    value: "47"
  },
  {
    color: "yellow",
    value: "68"
  },
  {
    color: "black",
    value: "75"
  },
  {
    color: "green",
    value: "75"
  },
  {
    color: "blue",
    value: "19"
  },
  {
    color: "cyan",
    value: "20"
  },
  {
    color: "magenta",
    value: "47"
  },
  {
    color: "yellow",
    value: "68"
  },
  {
    color: "black",
    value: "75"
  },
  {
    color: "green",
    value: "75"
  }
];

var result = [];
var outterIndex = -1;
var innerIndex = -1;
for (var i = 0; i < sampleData.length; i++) {
  if (i % 500 == 0) {
    outterIndex++;
    innerIndex = -1;
  }
  innerIndex++;
  result.push([outterIndex, innerIndex, sampleData[i].value])
}


console.log(result)
...