【问题标题】:ES6 / Lodash, how to check if an object contains a specific value of given request?ES6 / Lodash,如何检查对象是否包含给定请求的特定值?
【发布时间】:2020-04-14 20:10:03
【问题描述】:

有了下面这样的对象,我怎么知道这个对象中存在某个值,例如:template:d51a08fe-fb60-4da0-841b-03a732f19576

const obj= {
            "5871": "template:d51a08fe-fb60-4da0-841b-03a732f19576",
            "6993": "template:d07479ff-1172-4464-996d-32d6c7358979",
            "5123": "template:280ac289-c726-4cb1-8a11-9ae1c987b399"
          };

我尝试使用 lodash 一些,但这需要属性名称,但我无法在此处提供属性,例如 5871

【问题讨论】:

  • 检查所有值?你试过什么?

标签: javascript ecmascript-6 lodash


【解决方案1】:

您可以使用Object.values() 获取对象中所有值的列表。这将返回一个包含所有值的数组。然后你只需在数组上使用includes 函数来查看数组中是否存在该值。

const obj= {
            "5871": "template:d51a08fe-fb60-4da0-841b-03a732f19576",
            "6993": "template:d07479ff-1172-4464-996d-32d6c7358979",
            "5123": "template:280ac289-c726-4cb1-8a11-9ae1c987b399"
          };
          
const valueExists = Object.values(obj).includes("template:d07479ff-1172-4464-996d-32d6c7358979")

console.log(valueExists)

【讨论】:

  • 是的,如果出于某种原因您还需要属性名称,您可以针对对象的Object.values 编写稍微复杂一些的内容。
【解决方案2】:

Lodash 的_.includes() 可以处理对象和数组。另外,您可以使用_.findKey() 来,嗯,找到关键:

const obj = {
  "5871": "template:d51a08fe-fb60-4da0-841b-03a732f19576",
  "6993": "template:d07479ff-1172-4464-996d-32d6c7358979",
  "5123": "template:280ac289-c726-4cb1-8a11-9ae1c987b399"
};

const exists = _.includes(obj, 'template:d07479ff-1172-4464-996d-32d6c7358979')
const key = _.findKey(obj, v => v === 'template:d07479ff-1172-4464-996d-32d6c7358979')

console.log({ exists, key })
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script>

【讨论】:

    猜你喜欢
    • 2015-03-15
    • 2019-07-04
    • 1970-01-01
    • 2013-04-22
    • 1970-01-01
    • 2012-10-17
    • 2020-05-24
    • 1970-01-01
    • 2010-12-13
    相关资源
    最近更新 更多