如何根据Javascript中另一个元素值的元素值总数添加/删除元素
我正在尝试根据另一个值的总计数从数组中添加/删除元素如何根据Javascript中另一个元素值的元素值总数添加/删除元素,javascript,arrays,json,javascript-objects,Javascript,Arrays,Json,Javascript Objects,我正在尝试根据另一个值的总计数从数组中添加/删除元素 let data = [ { "details": [ { "Name": "DataSet1", "Severity": "4", "Cost": 20 }, { "Name": "DataSet2"
let data = [
{
"details": [
{
"Name": "DataSet1",
"Severity": "4",
"Cost": 20
},
{
"Name": "DataSet2",
"Severity": "4",
"Cost": 30
},
{
"Name": "DataSet3",
"Severity": "4",
"Cost": 25
}
],
"charge": 45
}
];
在这里,我试图得到一个数组,这样的总价值的成本是接近收费。这里,成本之和是75,大于45,所以我尝试如下:
const数据={
“费用”:50,
“详情”:[{
“名称”:“数据集1”,
“严重性”:“4”,
“成本”:20
},
{
“名称”:“数据集2”,
“严重性”:“4”,
“成本”:30
}, {
“名称”:“数据集3”,
“严重性”:“4”,
“费用”:25
}
],
};
常量GetItems和DontGoaboveCharge=
(费用,列表,开始=0,当前成本=0,结果=[])=>{
if(start==list.length)返回结果
常数{
成本
}=列表[开始]
const nextTotal=当前成本+成本
如果(nextTotal>charge)返回结果
返回getItems和dontgoaboveCharge(charge,list,start+1,nextTotal,[…result,list[start]]);
}
console.log(getItemsAndDontGoAboveCharge(data.charge,data.details))
const数据={
“费用”:50,
“详情”:[{
“名称”:“数据集1”,
“严重性”:“4”,
“成本”:20
},
{
“名称”:“数据集2”,
“严重性”:“4”,
“成本”:30
}, {
“名称”:“数据集3”,
“严重性”:“4”,
“费用”:25
}
],
};
常量GetItems和DontGoaboveCharge=
(费用,列表,开始=0,当前成本=0,结果=[])=>{
if(start==list.length)返回结果
常数{
成本
}=列表[开始]
const nextTotal=当前成本+成本
如果(nextTotal>charge)返回结果
返回getItems和dontgoaboveCharge(charge,list,start+1,nextTotal,[…result,list[start]]);
}
console.log(getItemsAndDontGoAboveCharge(data.charge,data.details))
比什么好?不,这听起来像是一个非常具体的场景。您必须使用循环在详细信息
数组上循环,并确定应删除数组中的哪个条目。你能展示你的尝试吗?比使用多个循环更好。比什么更好?不,这听起来像是一个非常具体的场景。您必须使用循环在详细信息
数组上循环,并确定应删除数组中的哪个条目。你能展示你的尝试吗?比使用多个循环更好。它很有效,谢谢!据我所知,有没有其他方法可以使用切片和reduce函数来实现这一点?有,但这并不好,因为filter/reduce遍历整个数组,并且没有办法阻止它们。因此,您最终将遍历您不需要的项目,这显然对性能不好。谢谢!据我所知,有没有其他方法可以使用切片和reduce函数来实现这一点?有,但这并不好,因为filter/reduce遍历整个数组,并且没有办法阻止它们。因此,您最终将遍历不需要的项,这显然不利于性能
let newdata = [
{
"details": [
{
"Name": "DataSet1",
"Severity": "4",
"Cost": 20
},
{
"Name": "DataSet3",
"Severity": "4",
"Cost": 25
}
],
"charge": 50
}
];