簡體   English   中英

檢查對象文字屬性的名稱

[英]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'});

如何遍歷對象文字的屬性並檢查屬性本身的名稱( 而不是值)是否以特定的字符或字符串開頭? 這有可能嗎? 如果沒有,您會推薦什么替代方案?

您可以使用for...in循環獲取Object每個鍵,然后檢查字符串或字符是否存在。

在下面的示例中,我正在檢查鍵是否以“〜”字符開頭。

for (const key in myObject) {
    if (key.indexOf('~') === 0) {
        // key contains '~' character
    }
}

您還可以使用正則表達式來匹配字符串,而不是使用indexOf

而不是for ...我建議在Object.keys函數上使用forEach循環。 這是因為for ... in查找原型鏈( 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 ~");
  }
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM