代码之家  ›  专栏  ›  技术社区  ›  arunmmanoharan

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

  •  -2
  • arunmmanoharan  · 技术社区  · 6 年前

    我有一个对象数组,我想得到这里显示的组合数组[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 回复  |  直到 6 年前
        1
  •  1
  •   Adam H    6 年前

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