[英]How to avoid testing for the existence of an element to add to a string in a large loop in Javascript?
我正在從json輸入和模板構建HTML字符串。
JSON將如下所示:
...
"count": "5",
"items": {
"classes":[],
"href": ["index.html","search.html","brands.html","users.html","orders.html"],
...
}
我在這樣的Javascript中查看:
for (i = 0; i < dyn.list.count; i += 1) {
elem = util.getTemplate('tmp_navbar_element', temps)
.replace('class_abc"','class_abc '+dyn.list.items.classes[i]+'"')
.replace("href='","href='"+dyn.list.items.href[i])
...
}
一切正常,但我不確定處理未在JSON配置中傳遞的元素的最佳方法。
例如,如果classes = []
,那么我現在正在為每個elem
添加undefined,因為用戶沒有指定類。
問題 :
是通過檢查if classes[i] !== undefined ...
來避免“未定義”條目的唯一方法if classes[i] !== undefined ...
還是有一種更簡單的方法來“只添加一個類,如果有一個”?
謝謝!
有幾種方法,這是一個更簡單的方法:
.replace('class_abc"','class_abc ' + (dyn.list.items.classes[i] || "") + '"')
這使用了奇怪的強大||
如果dyn.list.items.classes[i]
undefined
(或null
,或0
,或false
,或[有趣]] ""
,則運算符使用""
。
當然,這意味着你仍然在進行replace
你可以避免。 一個更平凡的版本是:
var cls;
for (i = 0; i < dyn.list.count; i += 1) {
elem = util.getTemplate('tmp_navbar_element', temps);
cls = dyn.list.items.classes[i];
if (cls) {
elem = elem.replace('class_abc"','class_abc '+cls+'"');
}
elem = elem.replace("href='","href='"+dyn.list.items.href[i]);
// ...
}
嘗試:
for (i = 0; i < dyn.list.count; i += 1) {
elem = util.getTemplate('tmp_navbar_element', temps)
.replace('tmp_gridcount"','tmp_gridcount '+(dyn.list.items.classes[i] || "")+'"')
.replace("tmp_gridcount",abc[i])
...
}
修改說:“如果dyn.list.items.classes [i]是假的 ,請插入一個空字符串”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.