检查对象文本属性的名称

check the name of an object literal property

本文关键字:属性 对象 文本 检查      更新时间:2023-09-26

>我有一个用于元素创建的速记函数,它采用标签名称和对象文字。

//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