gpt4 book ai didi

javascript - 使用 map 功能检查多个项目

转载 作者:行者123 更新时间:2023-12-01 01:35:36 24 4
gpt4 key购买 nike

我想检查数组中的每个对象,看看某些东西是否存在。假设我的数组如下所示:

const arrayOfItems = [
{
delivery_method: {
delivery_method: 'car',
delivery_rate: 1,
pickup_day: 'none',
},
total_cost: 5,
items: [{}],
},
{
delivery_method: {
delivery_method: 'pickup',
pickup_day: 'T',
delivery_rate: 0,
},
total_cost: 5,
items: [{}],
},
]

现在我有一个检查方法函数,如下所示:

async checkMethodChosen() {
let check = await arrayOfItems.map((item) => {
if (
(item.delivery_method.delivery_method === 'pickup'
&& item.delivery_method.pickup_day !== 'none')
|| item.delivery_method.delivery_method === 'car'
|| item.delivery_method.delivery_method === 'bike'
) {
return false
}
return true
})
let deliveryChosen = check.includes(false)

this.setState({
deliveryChosen,
})
}

如果delivery_method设置为“pickup”并且选择了pickup_day,或者如果delivery_method ===“car”或“bike”,则该函数将状态设置为true或false。如果数组中只有一个对象,这种方法就可以正常工作。如果有多个对象,则不起作用。

我想要发生的是,如果有多个对象,那么仅当在每个对象中选择了delivery_method时, this.state.deliveryChosen 才应该为 true 。如果尚未为某个对象选择它,则 this.state.deliveryChosen 应该为 false。

谢谢!

最佳答案

您要查找的函数是every()如果回调对数组中的每个项目都返回 true,则它将返回 true。

例如,这是一个仅返回 bool 值的简化版本:

const arrayOfItems = [{delivery_method: {delivery_method: 'car',delivery_rate: 1,pickup_day: 'none',},total_cost: 5,items: [{}],},{delivery_method: {delivery_method: 'pickup',pickup_day: 'T',delivery_rate: 0,},total_cost: 5,items: [{}],},]

function checkMethodChosen(arr) {
// will return true if every item of arr meets the following condition:
return arr.every((item) =>
(item.delivery_method.delivery_method === 'pickup' && item.delivery_method.pickup_day !== 'none')
|| item.delivery_method.delivery_method === 'car'
|| item.delivery_method.delivery_method === 'bike'
)
}
console.log(checkMethodChosen(arrayOfItems))

关于javascript - 使用 map 功能检查多个项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52862486/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com