匹配javascript对象长度
我有以下javascript对象: 输入匹配javascript对象长度,javascript,Javascript,我有以下javascript对象: 输入 data=[]; data[0]=[{"value":29},{"value":44}] data[1]=[{"value":16}] data[2]=[{"value":13},{"value":11},{"value":1}] data[3]=[{"value":13},{"value":11}] data[0]=[{"value":29},{"value":44},{"value":0},{"value":0},{"value":0},{"val
data=[];
data[0]=[{"value":29},{"value":44}]
data[1]=[{"value":16}]
data[2]=[{"value":13},{"value":11},{"value":1}]
data[3]=[{"value":13},{"value":11}]
data[0]=[{"value":29},{"value":44},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[1]=[{"value":0},{"value":0},{"value":16},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[2]=[{"value":0},{"value":0},{"value":0},{"value":13},{"value":11},{"value":1},{"value":0},{"value":0}]
data[3]=[{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}{"value":13},{"value":11}]
通过添加{value:0}
来匹配javascript对象长度的所需输出背后的逻辑,以实现所需的输出,我使用了unshift
和push
操作。这是我想要的输出的图示
数据1 0 00数据2 0 0
0 0数据3 0
0 0数据4 所需输出
data=[];
data[0]=[{"value":29},{"value":44}]
data[1]=[{"value":16}]
data[2]=[{"value":13},{"value":11},{"value":1}]
data[3]=[{"value":13},{"value":11}]
data[0]=[{"value":29},{"value":44},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[1]=[{"value":0},{"value":0},{"value":16},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[2]=[{"value":0},{"value":0},{"value":0},{"value":13},{"value":11},{"value":1},{"value":0},{"value":0}]
data[3]=[{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}{"value":13},{"value":11}]
电流输出:
如果查看数据[2]
,结果是意外的。我无法处理这个问题
data[0]=[{"value":29},{"value":44},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[1]=[{"value":0},{"value":0},{"value":16},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[2]=[{"value":13},{"value":11},{"value":1},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}]
data[3]=[{"value":0},{"value":0},{"value":0},{"value":0},{"value":0},{"value":0}{"value":13},{"value":11}]
这里是
data=[];
data[0]=[{"value":29},{"value":44}]
data[1]=[{"value":16}]
data[2]=[{"value":13},{"value":11},{"value":1}]
data[3]=[{"value":13},{"value":11}]
debugger;
console.log(data);
alllength=0
for (i=0;i<data.length;i++)
{
m= Object.keys(data[i]).length;
alllength=alllength+m;
}
console.log(alllength);
for (i=0;i<data.length;i++)
{
if(i==0)
{
m=Object.keys(data[i]).length;
for(j=0;j<alllength-m;j++)
{
data[i].splice(m+j+1, 0, {"value":0});
}
}
else if(i==data.length-1)
{
n=Object.keys(data[i]).length;
for(j=0;j<alllength-n;j++)
{
data[i].unshift({"value":0});
}
}
else
{
self.n="";
k=Object.keys(data[i-1]).length;
for (n=0;n<k;n++)
{
if(data[i-1][n].value==0)
{
console.log(n);
for(j=0;j<n;j++)
{
data[i].unshift({"value":0});
}
m=Object.keys(data[i]).length;
for(j=0;j<alllength-m;j++)
{
data[i].splice(m+j+1, 0, {"value":0});
}
break;
}
}
}
}
console.log(data)
data=[];
数据[0]=[{“值”:29},{“值”:44}]
数据[1]=[{“值”:16}]
数据[2]=[{“值”:13},{“值”:11},{“值”:1}]
数据[3]=[{“值”:13},{“值”:11}]
调试器;
控制台日志(数据);
alllength=0
对于(i=0;idata=[];
数据[0]=[{“值”:29},{“值”:44}]
数据[1]=[{“值”:16}]
数据[2]=[{“值”:13},{“值”:11},{“值”:1}]
数据[3]=[{“值”:13},{“值”:11}]
调试器;
控制台日志(数据);
alllength=0
对于(i=0;i好的,这里有几件事
1) 您将通过调用数组上的Object.keys来增加算法的时间复杂度。Data[i]是一个对象数组,因此调用Data[i].length而不是Object.keys(Data[i])可以很好地工作.length.array单独跟踪长度,其中调用Object.keys将在后台执行多个操作,这将降低算法的速度
2) 您的问题在于:在第43行,您将n设置为零
for (n=0;n<k;n++)
当n==0时,这将是真的,因为前一个数组中的前几个对象的值等于0
接下来,您将遍历并添加必要的0值对象,以使用此代码创建所需的结构
for(j=0;j<n;j++)
{
data[i].unshift({"value":0});
}
for(j=0;j使用reduce
和map
,这可能需要使用外部库来处理
var数据=[];
数据[0]=[{“值”:29},{“值”:44}]
数据[1]=[{“值”:16}]
数据[2]=[{“值”:13},{“值”:11},{“值”:1}]
数据[3]=[{“值”:13},{“值”:11}]
var totalLength=data.reduce(函数(长度,项){
返回长度+item.length;
}, 0);
var-key=0;
data=data.map(函数(项){
var out=[];
对于(var i=0;i console.log(data);
您现有的代码是什么?我也在这里添加了代码。t是超级代码,我已标记为答案。我想知道如何添加其他对象。例如,data[0]=[{“value”:29,“category”:“cat1”},{“value”:44,“category”:“cat1”},{“value”:0,“category”:“cat1”},…]
,对于数据[1]
-->类别:“cat2”,等等。
向对象添加更多数据应该可以,但是如果您的意思是将它们作为映射的一部分添加,那么我将跟踪索引data.map(函数(项,索引){/*…*/})
,然后将其添加到项目item.cat=index
;然后再将其推送到out
数组中。