如何根据Javascript中另一个元素值的元素值的总数添加/删除元素

问题描述

我正在尝试根据另一个值的总数从数组中添加/删除元素。

let data = [
    {
  "details": [
    {
      "Name": "DataSet1","Severity": "4","Cost": 20
    },{
      "Name": "DataSet2","Cost": 30
    },{
      "Name": "DataSet3","Cost": 25
    }
  ],"charge": 45
}
];

在这里,我试图获得一个数组,使得 Cost 的总价值接近于收费。在这里,成本总和是 75,它大于 45,所以我尝试如下:

  1. 计算费用和总费用的差值,如果它大于费用,则从数组中删除元素,这样新数组的总费用总是小于或接近费用。所以,我的新数组应该是:
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))