javascript - 如何删除数组对象中数组内的项目?javascript
问题描述
我想在每个 presentData 对象中添加一个名为 sumP 的字段,并用礼物项目总和填充它。
第二个目标,如果sumP > money我想删除里面最昂贵的项目它不起作用
const presentsData= [
{
name: "Peter",
presents: ["coffee","holidays"],
money: 7000
},
{
name: "Mario",
presents: ["car","coal"],
money: 300
},
{
name: "Amanda",
presents: ["computer","coal"],
money: 300
},
{
name: "David",
presents: ["clothes", "car"],
money: 2000
}
]
const prices= [
{
present: "coffee",
price: 1
},
{
present: "holidays",
price: 1000
},
{
present: "videogames",
price: 40
},
{
present: "computer",
price: 600
},
{
present: "tattoo",
price: 30
},
{
present: "clothes",
price: 80
},
{
present: "car",
price: 6000
},
{
present: "phone",
price: 800
},
{
present: "motorbike",
price: 3500
},
{
present: "coal",
price: 0
}
]
const pricesMap = new Map(prices.map(({ present, price }) => [present, price]))
const res1 = presentsData.map(s=>{
return {...s,
sumP: s.presents.reduce((acc, p) => acc + pricesMap.get(p),0)
}
})
console.log("this is res1=>",res1) //this is presentsData result after adding the field sumP
console.log(pricesMap)
const res2 = res1.map((r)=>{
if(r.sumP > r.money){
( /* would like to delete the item inside "presents" with the bigger price using pricesMap */)
}
})
console.log(res2)
pd:我发现很难找出如何在数组中迭代礼物,数组内的对象内的数组。
解决方案
const deleteMostExpensive = (array, prices) => {
let res = [];
let mostEspensive = array[0];
array.forEach(product => {
let cur = prices.find(p => p.present == product)
if (cur.price > mostEspensive.price)
mostEspensive = cur;
})
array.forEach(e => {
if (e != mostEspensive.present)
res.push(e);
})
return res;
}
const calculSumP = (elt, prices) => {
r = 0;
elt.presents.forEach(e => {
r += prices.find(c => c.present == e).price;
})
return r;
}
presentsData.forEach(elt => {
elt.sumP = calculSumP(elt, prices);
while (elt.sumP > elt.money) {
let newPresents = deleteMostExpensive(elt.presents, prices);
elt.presents = newPresents;
elt.sumP = calculSumP(elt, prices)
}
})
推荐阅读
- typescript - 等到某个值在 RXJS 中为真
- css - Xpath 问题 - 无法从一个 td 遍历到另一个 td
- embedded - 如何在 Meson 项目中包含树外资源?
- python - 如何解决 Docker 映像中的 Tesseract“加载语言 'eng' 失败”问题
- c++ - Libtorch 与 g++ 一起工作,但与 Intel 编译器一起失败
- android - 如何将从第二个活动拍摄的捕获图像发回主要活动?
- flutter - 如何在 Dart 中检查一个值是否为 double 类型的数字(偶数或奇数)?
- python - Python中掷N个骰子的理论概率
- python - 如何为图形添加颜色以区分正数和负数数据?
- node.js - discord.js 成员计数 - 无法读取未定义的属性“通道”