gpt4 book ai didi

javascript - 我怎样才能更优雅地做几个 _.has 检查?

转载 作者:行者123 更新时间:2023-11-29 10:40:11 25 4
gpt4 key购买 nike

我有一个这样的对象

myObject:{"property1": "valueX",
"property2": "valueY",
"property3": "valueZ",
"property4": "valueV",
"property5": "valueW"}

并且我想确保我的对象属性名称中没有一个与多个字符串匹配。

我找到的最直观的方法是这个:

if( !_.has(myObject, "TestingValue1")&&
!_.has(myObject, "TestingValue2")&&
!_.has(myObject, "TestingValue3")&&
!_.has(myObject, "TestingValue4")){
//do something
}

但是如果我有太多的属性名称需要检查,它就会变成相当大的一段代码。

我正在尝试提出一个更优雅的解决方案。我觉得它几乎没问题,但我似乎没有工作(它总是返回 true)。在这里:

var TestingValues = ["TestingValue1", "TestingValue2", "TestingValue3"]

if (!_.every(TestingValues, _.partial(_.has, myObject))){
//do something
}

你能告诉我哪里出了问题吗?我应该如何声明 TestingValues

编辑:

@Sergiu Paraschiv 我在 myObject 和测试数组中使用了不同的值,只是为了使其更易于阅读。当然,我用相同的值对其进行了测试。

你是对的,我刚刚意识到它有效。一开始我没有,因为它没有按预期工作。我把事情弄混了:如果字符串数组中的任何项与 myObject 的任何属性匹配,我想返回false

最佳答案

你可以这样做:

var TestingValues = [ "TestingValue1", "TestingValue2", "TestingValue3" ];

if(!_.isEmpty(_(myObject).pick(TestingValues)){...

或者像你自己建议的那样:

if (!_.some(TestingValues, _.partial(_.has, myObject)))

关于javascript - 我怎样才能更优雅地做几个 _.has 检查?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30710890/

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