从对象数组中获取特定键

时间:2017-09-06 12:26:27

标签: javascript arrays json typescript object

我有一个带有键a,b,c的对象数组。 a具有属性property1,b具有属性property1和property2,c具有属性propertycheck。我的要求是我只想获得没有property1的密钥。在这种情况下,我希望输出为c。任何帮助表示赞赏。坚持到这一点

  [
      {
        "a": {
          "property1": "false"
        }
      },
      {
        "b": {
          "property1": "false",
          "property2": "truthy"
        }
      },
      {
        "c": {
          "propertycheck": "required"
        }
      }
 ]

3 个答案:

答案 0 :(得分:2)

这是一个版本,你可以为你的3个对象中的每个对象提供许多子键。

var arr = [
  {
    "a": {
      "property1": "false"
    }
  },
  {
    "b": {
      "property1": "false",
      "property2": "truthy"
    }
  },
  {
    "c": {
      "propertycheck": "required"
    }
  }
]

var arr = arr.filter(function(elem){   //Filter on each object in the array
  var checkKey = true;                 //checkKey will be the return value of filter
  Object.keys(elem).forEach(function(key){  //For each key of elem
    if("property1" in elem[key]){           //If value of key (object) own "property1"
      checkKey = false                      //You want to remove the object from table so return false to filter
    }
  })
  return checkKey
})

-  参考Array.filter https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/Array/filter

答案 1 :(得分:0)

这可以做到:

d = [
      {
        "a": {
          "property1": "false"
        }
      },
      {
        "b": {
          "property1": "false",
          "property2": "truthy"
        }
      },
      {
        "c": {
          "propertycheck": "required"
        }
      }
]

d.filter(function(x){
   if(!x[Object.keys(x)[0]].hasOwnProperty("property1"))
    {return x}
})

说明:

  1. d.filter将在应用过滤功能时迭代对象数组
  2. x[Object.keys(x)[0]]这用于动态获取密钥a,b或c。
  3. .hasOwnProperty("property1")将检查密钥property1是否在对象中。

答案 2 :(得分:-5)

使用hasOwnProperty来识别具有属性的对象..就像这段代码一样,它会返回你的对象' c'

myObjArr.filter(o => ! o.hasOwnProperty( myPropAsString))