将对象数组映射到动态数组数组

时间:2018-07-05 19:24:59

标签: javascript arrays javascript-objects

我有一个对象数组,我想得到一个数组的数组,这里显示为[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多个值。

数组数组的格式为here

请咨询。

1 个答案:

答案 0 :(得分:1)

这是一个非常基本的实现。基本上循环遍历数组的内容,然后测试其mod 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)