如何检查 JavaScript 对象是否具有以特定字符串开头的属性名称
How to check if a JavaScript Object has a property name that starts with a specific string?
假设我有这样的javascript对象:
var obj = {
'addr:housenumber': '7',
'addr:street': 'Frauenplan',
'owner': 'Knaut, Kaufmann'
}
如何检查对象的属性名称是否以 addr
开头?我想像下面这样的事情应该是可能的:
if (e.data[addr*].length) {
我尝试了RegExp
,.match()
无济于事。
您可以使用
返回bool
的Array.some
根据对象的键进行检查。
if(Object.keys(obj).some(function(k){ return ~k.indexOf("addr") })){
// it has addr property
}
您也可以使用Array.filter
并检查其长度。但Array.some
在这里更贴切。
可以使用
Object.keys
函数获取键数组,然后使用 filter
方法仅选择以 "addr"
开头的键。
var propertyNames = Object.keys({
"addr:housenumber": "7",
"addr:street": "Frauenplan",
"owner": "Knaut, Kaufmann"
}).filter(function (propertyName) {
return propertyName.indexOf("addr") === 0;
});
// ==> ["addr:housenumber", "addr:street"];
这给了你存在(propertyNames.length > 0
(和键的特定名称,但如果你只需要测试是否存在,你可以用some
替换filter
。
Obj = {address: 'ok', x:5}
Object.keys(obj).some(function(prop){
return ~prop.indexOf('add')
}) //true
你也可以
用startsWith((来检查这一点:
Object.keys(obj).some(i => { return i.startsWith('addr') })
试试这个:
var myObject = {
'prop1': 'value1',
'xxxxx': 'value2'
};
var stringToCheck = 'addr';
for(var propertyName in myObject) {
var x = propertyName.substr(0, stringToCheck.length - 1);
if(x == stringToCheck) {
return true;
}
}
我认为"查询"对象属性是不可能的。您必须单独遍历属性并确定它们是否匹配。像这样的东西...
function findProp(e, prop)
{
for(var o in e.data){
if(o.substr(0, prop.length)==prop) //<- you could try the regex or match operation here
return true;
}
return false;
}
alert(findProp({data:{addr:{street:"a", sub:"b"}}}, 'addr'));
然后,如果 findProp 返回 true,则可以处理该属性...
你可以写一个函数
function check(model) {
var keys = [];
for (key in model) {
if(key.indexOf("addr") > -1)
keys.push(key);
}
return keys;
}
为什么不只是
var foo = {'bar':'funtimes'};
if (foo.bar.includes('fun')) {
console.log('match');
}
相关文章:
- 对id以某个字符串开头的元素进行计数
- 如何在javascript中使用string.replace.将匹配字符串开头的两个不同表达式替换为null
- 如何删除字符串开头和结尾的换行符
- Greasemonkey - 如何在以特定字符串开头的页面上查找并打开 aν URL
- JavaScript 中的正则表达式:匹配字符串开头的多个子字符串
- 我可以选择所有属性名称(而不是值)以某个字符串开头的元素吗
- 正则表达式能否匹配字符串开头或结尾的字符(但不能同时匹配)
- 在jquery中选择id以字符串开头的元素
- 获取DOM中属性名称以某个字符串开头的所有HTML元素
- 如何匹配字符串开头的数字
- 为所有以特定字符串开头的变量赋值
- 正则表达式,用于匹配字符串开头的协议相对 URL
- 在 JavaScript 中按字符串开头或单个字符进行匹配
- REGEX 检查字符串开头或结尾的字符
- 如何在 javascript 中检查字符串开头是否有空格
- 正则表达式匹配:字符串开头不包含字符
- 如何从字符串开头获得与正则表达式的匹配项
- 如何检查 JavaScript 对象是否具有以特定字符串开头的属性名称
- Web 视图中字符串开头和结尾的像素偏移量 (x,y)
- JS获取以字符串开头键的对象值