【问题标题】:Node.js - find object in array by value [closed]Node.js - 按值在数组中查找对象[关闭]
【发布时间】:2017-11-28 22:54:31
【问题描述】:

我正在尝试通过其中一个键的值来获取数组中的对象。

数组:

{
"privileges" : 
    [
      {
        "resource" : "login" ,
        "actions": ["true"]
      },
      {
        "resource":  "user" ,
        "actions": ["create","read"]
      }
    ]
}

【问题讨论】:

  • 请问预期的结果是什么?
  • 我输入了 console.log(user.role.privileges) 我得到了这个权限:[ { '0': [Object], '1': [Object], actions: [] } ] }
  • @HaythemHedfi 您接受的答案不包含与 MongoDB 相关的任何内容,他们为什么要使用这些标签?

标签: javascript node.js mongoose mongoose-schema


【解决方案1】:

let obj  = {
"privileges" : 
    [
      {
        "resource" : "login" ,
        "actions": ["true"]
      },
      {
        "resource":  "user" ,
        "actions": ["create","read"]
      }
    ]
}

function filterValue(value) {
return obj["privileges"].filter((object) => {
 return object["resource"] == value
})
}
console.log(filterValue("user"))

【讨论】:

    【解决方案2】:

    你可以使用 find 方法:

    const a = {
        "privileges": [
          {
            "resource" : "login" ,
            "actions": ["true"]
          },
          {
            "resource":  "user" ,
            "actions": ["create","read"]
          }
        ]
    };
    
    var objFound = a.privileges.find(obj => obj.resource === "user");
    

    【讨论】:

      【解决方案3】:

      不清楚你在问什么,但是使用 Ramda 搜索对象属性值是这样的:

      const a = {
          "privileges": [
            {
              "resource" : "login" ,
              "actions": ["true"]
            },
            {
              "resource":  "user" ,
              "actions": ["create","read"]
            }
          ]
      }
      
      R.find(R.propEq("resource", "login"), a.privileges);
      

      【讨论】:

        猜你喜欢
        • 2016-06-09
        • 2016-06-21
        • 1970-01-01
        • 1970-01-01
        • 2018-01-02
        • 2013-09-05
        • 2020-11-05
        • 2022-08-18
        • 2019-04-01
        相关资源
        最近更新 更多