[英]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.