Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/441.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:将对象数据推送到数组中的特定索引中,并将零推送到索引的其余部分_Javascript_Sorting - Fatal编程技术网

Javascript:将对象数据推送到数组中的特定索引中,并将零推送到索引的其余部分

Javascript:将对象数据推送到数组中的特定索引中,并将零推送到索引的其余部分,javascript,sorting,Javascript,Sorting,在数组中的特定索引上插入对象数据时,我遇到了一个小问题 这是我的JSON let arr = [ {"days":3, "count" : 10 }, {"days":4, "count" : 12 }, {"days":7, "count" : 14 }, {"days":9, "count" : 20 } ] 输出,我想有 updatedArr = [ {"days":0, "count" : 0 },

在数组中的特定索引上插入对象数据时,我遇到了一个小问题

这是我的JSON

let arr = [ 
        {"days":3, "count" : 10 },
    {"days":4, "count" : 12 },
    {"days":7, "count" : 14 },
    {"days":9, "count" : 20 }

]
输出,我想有

updatedArr = [ 
             {"days":0, "count" : 0 },
             {"days":0, "count" : 0 },
             {"days":3, "count" : 10 },
             {"days":4, "count" : 12 },
             {"days":0, "count" : 0 },
             {"days":6, "count" : 34 },
]
因此,基本上我希望根据名为days的键将对象数据推送到特定索引

如果的值大于5,则它将是所有值的总和,并将其推到最后一个指数,例如第五个指数

这是我尝试过的代码

让arr=[{
“天”:3,
“计数”:10
},
{
“天”:4,
“计数”:12
},
{
“天”:7天,
“计数”:14
},
{
“天”:9天,
“计数”:20
}
]
对于(让索引=0;索引<6;索引++){
常量元素=arr[索引];
设eachObject={}
eachObject.count=0
if(element&&element!==未定义的&&element.days&&element.days 5){
eachObject.days=element.days
eachObject.count+=Number.parseInt(element.count)
阵列拼接(4,0,每个对象)
}否则{
eachObject.days=0
eachObject.count=0
arr.push(每个对象)
}

}
您可以使用空计数构建新的数据集,并使用数组中的实际值进行更新

让我们从蓄能器开始

这是一个新数组,使用长度为
6
项的对象,并使用
days
count
属性的对象映射

获取一个数组和一个startValue,并为每个元素返回已更改的累加器

在回调内部,将对
days
属性进行调整,以获得更大的值

对元素的某些属性进行更新。最后返回累加器
r

let array=[{days:3,count:10},{days:4,count:12},{days:7,count:14},{days:9,count:20}],
最大天数=6天,
结果=array.reduce(
(r,{天,计数})=>{
天数=Math.min(天数,最大天数);
r[天-1]。天=天;
r[天数-1]。计数+=计数;
返回r;
},
from({length:maxDays},()=>({days:0,count:0}))
);
控制台日志(结果)

。作为控制台包装{max height:100%!important;top:0;}
请您逐步解释此解决方案。谢谢您的回答。天从1开始到2,3,4,5,5+,所以我猜数组中会有1个索引移动。谢谢你的回答。有时,即使我在数据中得到了天数键,也会出现未定义天数的错误。@NinaScholz。这是因为Array.from({length:6})。我可能会得到大于6天的天数,有时甚至是50天。那么我如何解决这个问题呢?谢谢。请添加一些大于6天的日期以及所需的结果。