我有一个带有键a,b,c的对象数组。 a具有属性property1,b具有属性property1和property2,c具有属性propertycheck。我的要求是我只想获得没有property1的密钥。在这种情况下,我希望输出为c。任何帮助表示赞赏。坚持到这一点
[
{
"a": {
"property1": "false"
}
},
{
"b": {
"property1": "false",
"property2": "truthy"
}
},
{
"c": {
"propertycheck": "required"
}
}
]
答案 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}
})
d.filter
将在应用过滤功能时迭代对象数组x[Object.keys(x)[0]]
这用于动态获取密钥a,b或c。 .hasOwnProperty("property1")
将检查密钥property1
是否在对象中。 答案 2 :(得分:-5)
使用hasOwnProperty来识别具有属性的对象..就像这段代码一样,它会返回你的对象' c'
myObjArr.filter(o => ! o.hasOwnProperty( myPropAsString))