【问题标题】:Check if Object value equals to string value检查对象值是否等于字符串值
【发布时间】: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


【解决方案1】:

如果你想获得第一个返回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)

【讨论】:

  • 感谢您的回复,尝试了但没有成功,您能看到我更新的问题吗,再次感谢。
【解决方案2】:

您可以使用 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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-11
    • 2011-12-08
    • 1970-01-01
    • 2015-08-21
    • 2018-04-01
    • 1970-01-01
    • 2017-04-16
    • 2014-07-29
    相关资源
    最近更新 更多