检查 javascript 对象是否包含一些给定的键
Check if javascript object contains some of gives keys
我有一个大约有 10 个数组的对象。我想检查对象是否包含 2 个数组之一。 (我知道服务器数组的名称 returns)
data.serverObjects = {
cityNames : [],
cityCodes: [],
cityMapData: []
}
我正在努力实现以下结果:
data.serverObject.hasOneOfKey('key1', 'key2') //should return false
data.serverObject.hasOneOfKey('cityNames', 'key2') //should return true
我想用 _.findKey
来做,但是我用的是 underscore
的 1.6 版本,它不支持这个功能。
请提出一些解决方案。
这是一个实用的解决方案:
Object.prototype.hasOneOfKey = function(keys){
return Object.keys(this).filter(function(d){
return keys.indexOf(d) >= 0;
}).length > 0;
}
示例:
var person = {
name: "Bart",
surname: "Simpson"
};
person.hasOneOfKey(["name","age"]); // true
person.hasOneOfKey(["age"]); // false
只需遍历键并检查 hasOwnProperty
:
Object.prototype.hasOneOfKey = function(){
for(var i=0;i<arguments.length;i++){
if(this.hasOwnProperty(arguments[i])){
return true;
}
}
return false;
};
这是一个解决方案。
P.S: 这只适用于函数 hasOneOfKey
中的 2 个值
var serverObjects = {
cityNames: [],
cityCodes: [],
cityMapData: []
}
Object.prototype.hasOneOfKey = function(a, b) {
return (a in this || b in this);
}
console.log(serverObjects.hasOneOfKey('key1', 'key2'));
console.log(serverObjects.hasOneOfKey('key1', 'cityNames'));
因为我是下划线的粉丝,所以我想出了以下解决方案。如果这看起来不错,请提出建议。
给定的对象是,
var serverObjects = {
cityNames: [],
cityCodes: [],
cityMapData: []
}
解法:
var serverObject = _.keys(data.serverObject);
var hasOneOfKey = _.any(serverObject, function (property) {
return (property.indexOf('cityNames') !== -1 || property.indexOf('key') !== -1);
});
我有一个大约有 10 个数组的对象。我想检查对象是否包含 2 个数组之一。 (我知道服务器数组的名称 returns)
data.serverObjects = {
cityNames : [],
cityCodes: [],
cityMapData: []
}
我正在努力实现以下结果:
data.serverObject.hasOneOfKey('key1', 'key2') //should return false
data.serverObject.hasOneOfKey('cityNames', 'key2') //should return true
我想用 _.findKey
来做,但是我用的是 underscore
的 1.6 版本,它不支持这个功能。
请提出一些解决方案。
这是一个实用的解决方案:
Object.prototype.hasOneOfKey = function(keys){
return Object.keys(this).filter(function(d){
return keys.indexOf(d) >= 0;
}).length > 0;
}
示例:
var person = {
name: "Bart",
surname: "Simpson"
};
person.hasOneOfKey(["name","age"]); // true
person.hasOneOfKey(["age"]); // false
只需遍历键并检查 hasOwnProperty
:
Object.prototype.hasOneOfKey = function(){
for(var i=0;i<arguments.length;i++){
if(this.hasOwnProperty(arguments[i])){
return true;
}
}
return false;
};
这是一个解决方案。
P.S: 这只适用于函数 hasOneOfKey
var serverObjects = {
cityNames: [],
cityCodes: [],
cityMapData: []
}
Object.prototype.hasOneOfKey = function(a, b) {
return (a in this || b in this);
}
console.log(serverObjects.hasOneOfKey('key1', 'key2'));
console.log(serverObjects.hasOneOfKey('key1', 'cityNames'));
因为我是下划线的粉丝,所以我想出了以下解决方案。如果这看起来不错,请提出建议。
给定的对象是,
var serverObjects = {
cityNames: [],
cityCodes: [],
cityMapData: []
}
解法:
var serverObject = _.keys(data.serverObject);
var hasOneOfKey = _.any(serverObject, function (property) {
return (property.indexOf('cityNames') !== -1 || property.indexOf('key') !== -1);
});