在javascript对象中推送和不移位操作

我有以下数据集

输入:

dataset[0]=[{data:29, color:"y"},{data:44, color:"g"}]
dataset[1]=[{data:16, color:"r"},{data:23, color:"m"},{data:23, color:"b"}]

我在条形图上显示这些信息,但条形图试图对它们进行分组。 它并不能给我我所期望的。 http://jsfiddle.net/7dhb4jh0/1

因此,在输入条形图之前,我需要输出以下内容

通过添加{data:0, color:null}来匹配两个数据集长度的所需输出背后的逻辑有两件事情涉及到unshiftpush操作

期望的输出:

dataset[0]=[{data:29, color:"y"},{data:44, color:"g"},{data:0, color:null},{data:0, color:null},{data:0, color:null}]
dataset[1]=[{data:0, color:null},{data:0, color:null},{data:16, color:"r"},{data:23, color:"m"},{data:23, color:"b"}]

初始尝试

我做了如下,https://jsfiddle.net/s8mywm33/1/

dataset=[];
dataset[0]=[{data:29, color:"y"},{data:44, color:"g"}]
dataset[1]=[{data:16, color:"r"},{data:23, color:"m"},{data:23, color:"b"}]

sum1=dataset[0].length
sum2=dataset[1].length

for(i=0;i<sum1;i++)
{
    dataset[1].unshift({data:0, color:null})
}

for(i=0;i<sum2;i++)
{
   dataset[0].splice(2, 0, {data:0, color:null});
}

console.log(dataset[0]);
console.log(dataset[1]);

但是,有没有更好的方法来做到这一点?


根据我在评论中的建议,有很多方法可以做到这一点。 我建议的只是使用虚拟值(如我在这里提到的):

var blank = {data:0, color:null};
var dataset = [];
dataset[0] = [{data:29, color:"y"}, {data:44, color:"g"}, blank, blank, blank];
dataset[1] = [blank, blank, {data:16, color:"r"}, {data:23, color:"m"}, {data:23, color:"b"}];

这使得你的意图清楚地表明数据应该在哪里,并且不需要额外的代码。

链接地址: http://www.djcxy.com/p/19369.html

上一篇: Push and Unshift Operation in javascript object

下一篇: Add object to the beginning of array using spread operator