【发布时间】:2018-02-10 21:06:53
【问题描述】:
我在 ES6 中有一个场景,我正在将 vuejs 用于当前模块。
我需要检查一个字符串值是否存在于数组对象中。
let obj1 = [{name: "abc ced", id: 1},
{name: "holla' name", id: 2},
{name: "3' name", id: 3}]
let obj2 = { key: "3' name" , key1: 2 }
我需要获取 obj1 的对象,其中 obj2 的 name 属性值存在于 obj1 中。像这样做
_.each(obj1, function(obj){
for (var k in obj) {
if (!obj.hasOwnProperty(k)) continue
if (obj[k] === obj2.key) {
console.log(obj)
}
}
})
我错过了什么吗?因为控制台从不记录任何值。
注意:
我正在使用 loadash ,也尝试使用 find
let result = _.find(obj1 , {name: obj2.key})
console.log(result)
它会工作,如果会尝试使用
let result = _.find(obj1 , {id: obj2.key1})
console.log(result)
所以对于整数匹配它工作正常,但对于字符串没有控制台。
但看起来什么都没有。然后我尝试了上面给出的其他解决方案
注意:一切正常,我唯一缺少的是我没有检查字符串大小写,因为有一些大写和大写问题。如此隐蔽的可比较的字符串大小写,所以你至少不会犯这些愚蠢的错误
干杯
【问题讨论】:
-
您正在检查
obj1.key。应该是obj2.key -
你能清除一件事吗,你想从 obj1 中检查一些特定的键,比如
name还是只想找到与 obj1 中存在的任何键匹配的? -
@RaghavGarg 好吧,我想检查 obj1 中是否有任何名称等于 obj2.key 的对象。所以它是obj1中的特定键名
-
好的,感谢您解决这个问题。在你的更新中还有一件事你说 lodash 代码也不起作用,对吧?
-
此外,您的代码将检查任何字段(在 obj1 中)是否与
obj2.key相等匹配,因此根据您在 cmets 中的更新,也许您应该考虑给出的答案。
标签: javascript json object ecmascript-6