gpt4 book ai didi

javascript - 有没有办法根据数组内的标志过滤数组

转载 作者:行者123 更新时间:2023-11-30 14:13:55 25 4
gpt4 key购买 nike

我正在尝试根据标志 isSome: true 过滤数组。我想在该数组中不存在该标志时进行过滤

var value = [
{ "somevalues": {},
"moreDetails": {
"isSome": "true"
}
},
{ "somevalues": {},
"moreDetails": {}
},
{ "somevalues": {},
"moreDetails": {}
},
]
const valuewithisSome = value.filter(o => o.moreDetails && o.moreDetails.isSome);
const valuewithoutisSome = value.filter(o => o.moreDetails && !o.moreDetails.isSome);
console.log(valuewithisSome);
console.log(valuewithoutisSome);

valuewithisSome 正在按预期工作并返回带有 isSome: true 的数组。

valuewithoutisSome 没有按预期工作,因为我不想在 morevalues 数组中传递 isSome false,有没有办法在不传递该标志的情况下进行过滤?

最佳答案

您已有的“无”代码应该可以工作:

const valuewithoutisSome = value.filter(o => o.moreDetails &&  !o.moreDetails.isSome);

表达式 o.moreDetails.isSome 将评估为 undefined 如果“isSome”属性缺失或显式为 false-y,所以 !o.moreDetails .isSome 在这种情况下将为 true

虽然这行得通,但如果您想显式测试该属性是否为 false 当它实际存在时,您可以这样做:

const valuewithoutisSome = value.filter(o => 
o.moreDetails &&
(!("isSome" in o.moreDetails) || !o.moreDetails.isSome)
);

当“isSome”属性存在时,它只会返回 false(并过滤掉数组条目)。如果不是,或者如果它存在并且 true,则该条目将出现在过滤结果中。

关于javascript - 有没有办法根据数组内的标志过滤数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53914397/

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