我在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的对象,其中obj1中存在obj2的name属性值。这样做
_.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)
因此对于整数匹配,它工作正常,但对于字符串没有控制台。
但看起来一无所获。然后我尝试了上面给出的其他解决方案
注意:一切都运行正常,只有我缺少的是我没有检查字符串的情况,因为有一些大写和大写问题。如此隐蔽可比的字符串大小写,所以你至少不要犯这些愚蠢的错误
欢呼答案 0 :(得分:3)
如果你想获得第一个返回true
条件的对象,你可以使用find()
,否则你可以使用filter()
。
let obj1 = [{name: 'abc ced', id: 'ced'},
{name: 'holla name', id: 'xyz'}]
let obj2 = { key: 'abc ced' }
var result = obj1.find(({name}) => obj2.key == name)
console.log(result)

答案 1 :(得分:0)
您可以使用lodash _.find
。详细了解lodash find。
let obj1 = [
{ name: "abc ced", id: "ced"},
{ name: "holla' name", id: "xyz"},
{ name: "3' name", id: "xz"},
{ name: 5, id: "yz"}
];
let obj2 = { key: "3' name" }
let obj3 = { key: 5 }
var result = _.find(obj1, { name: obj2.key });
console.log(result)
var result = _.find(obj1, { name: obj3.key });
console.log(result)

<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
&#13;