检查Object值是否等于字符串值

时间:2017-09-01 18:48:59

标签: javascript json object ecmascript-6

我在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)

因此对于整数匹配,它工作正常,但对于字符串没有控制台。

但看起来一无所获。然后我尝试了上面给出的其他解决方案

注意:一切都运行正常,只有我缺少的是我没有检查字符串的情况,因为有一些大写和大写问题。如此隐蔽可比的字符串大小写,所以你至少不要犯这些愚蠢的错误

欢呼

2 个答案:

答案 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;
&#13;
&#13;