Javascript:将对象数据推送到数组中的特定索引中,并将零推送到索引的其余部分
在数组中的特定索引上插入对象数据时,我遇到了一个小问题 这是我的JSONJavascript:将对象数据推送到数组中的特定索引中,并将零推送到索引的其余部分,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 },
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天的日期以及所需的结果。