如何解决如何根据Javascript中另一个元素值的元素值的总数添加/删除元素
let data = [
{
"details": [
{
"Name": "DataSet1","Severity": "4","Cost": 20
},{
"Name": "DataSet2","Cost": 30
},{
"Name": "DataSet3","Cost": 25
}
],"charge": 45
}
];
在这里,我试图获得一个数组,使得 Cost 的总价值接近于收费。在这里,成本总和是 75,它大于 45,所以我尝试如下:
- 计算费用和总费用的差值,如果它大于费用,则从数组中删除元素,这样新数组的总费用总是小于或接近费用。所以,我的新数组应该是:
let newdata = [
{
"details": [
{
"Name": "DataSet1","charge": 50
}
];
有没有更好的方法来做到这一点? Javascript 是否具有执行此操作的任何内置功能?
解决方法
const data = {
"charge": 50,"details": [{
"Name": "DataSet1","Severity": "4","Cost": 20
},{
"Name": "DataSet2","Cost": 30
},{
"Name": "DataSet3","Cost": 25
}
],};
const getItemsAndDontGoAboveCharge =
(charge,list,start = 0,currentCost = 0,result = []) => {
if (start === list.length) return result
const {
Cost
} = list[start]
const nextTotal = currentCost + Cost
if (nextTotal > charge) return result
return getItemsAndDontGoAboveCharge(charge,start + 1,nextTotal,[...result,list[start]]);
}
console.log(getItemsAndDontGoAboveCharge(data.charge,data.details))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。