检查对象文本属性的名称
check the name of an object literal property
>我有一个用于元素创建的速记函数,它采用标签名称和对象文字。
//create element
function $make(tag, parameters) {
var o = document.createElement(t);
if (p.style) o.style.cssText = p.style;
if (p.class) o.className = p.class;
if (p.text) o.textContent = p.text;
return o;
}
你称之为很简单:
var e = $make('div', {style: 'float: left', class: 'myClass', text: 'Some Text'});
我想使用属性中的键字符前缀设置属性,而不是为每个单独的属性设置检查。例如,如果我想为链接设置href
,我可能会调用:
var e = $make('a', {style: 'float: left', text: 'Google', ~href: 'https://www.google.com'});
如何循环访问对象文本的属性并检查属性本身的名称(而不是值)是否以特定字符或字符串开头?这可能吗?如果没有,您会推荐什么替代方案?
而不是...我建议在 Object.keys 函数上使用 forEach 循环。这是因为对于...在查找原型链 (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in#Iterating_over_own_properties_only)。
var obj = {"style": 'float: left', "text": 'Google', "~href": 'https://www.google.com'};
Object.keys(obj).forEach((elm) => {
console.log("Key=>Value : " + elm + "=>" + obj[elm]);
if(elm.contains("~")) {
console.log("Key: " + elm + " contains ~");
}
});
您可以使用
for...in
循环来获取Object
中的每个键,然后检查字符串或字符是否存在。
在下面的示例中,我正在检查键是否以"~"字符开头。
for (const key in myObject) {
if (key.indexOf('~') === 0) {
// key contains '~' character
}
}
您也可以使用正则表达式来匹配字符串,而不是使用indexOf
相关文章:
- 为什么我可以在Array属性对象中找到Javascript Array for Each方法
- 使用onclick调用属性对象函数
- 嵌套为..in 循环,列出多维对象的属性(对象)
- 动态属性对象 - JSON
- 在不使用隔离范围angularjs自定义指令的情况下获取属性对象
- 通过属性传递属性/对象.Javascript
- Javascript:属性/对象的类型
- 访问JSON中的属性(对象)
- 属性对象Javascript不是用Jquery Deferred设置的
- 无法读取属性'#<对象>'未定义的获取错误
- Twitter中多属性对象的子字符串匹配
- 无法设置'data'属性'对象'标记.(只IE8)
- 更新数据属性对象属性值
- 将属性对象的选定对象从原型推入数组
- 将单个属性对象字面量的数组转换为仅包含其值的数组的最佳方法
- 寻找一种更简单的方法来检查是否多个属性&对象中的方法是未定义的
- 主干模型:带有get方法的空属性,但在属性对象中
- 如何赋值给"text"someText"属性对象在动能js
- Angularjs的数据绑定与数据属性对象
- 如何将一个嵌套的javascript对象转换为只有一级属性对象