说我有一个带有html字符串的对象数组(还有其他的东西,但我特别关注每个对象的html属性。例如。
var items = [{
html: '<div>test</div>'
}, {
html: '<div>test</div>'
}, {
html: '<div>test</div>'
}];
我需要使用所有这些字符串构建一个字符串,我需要它们的顺序与它们一样,所以反向while循环就出来了。
构建html的速度比以下更快吗?
var html = [];
for (var i = 0, itemLen = items.length; i < itemLen; i++) {
html.push(items[i].html)
}
output.innerHTML = html.join('');
答案 0 :(得分:2)
会更快:
var html = '';
for (var i = 0, itemLen = items.length; i < itemLen; ++i)
html += items[i].html;
output.innerHTML = html;
编辑:
这更快:
var html = '';
for (var i = 0, itemLen = items.length; i < itemLen; html += items[i++].html);
答案 1 :(得分:1)
这比你的快得多
var html = '';
for (var i = 0, itemLen = items.length; i < itemLen; i++) {
html += items[i].html;
}
output.innerHTML = html;
答案 2 :(得分:1)
var html = '';
for (var i = 0, itemLen = items.length; i < itemLen; i++) {
html += items[i].html;
}
output.innerHTML = html
简单地连接到一个字符串会比构建一个数组更快,并且因为技术上双重循环数据而不是循环它一次。
答案 3 :(得分:0)
这也是一招:
var items = [
{html: '<div>test</div>'},
{html: '<div>test</div>'},
{html: '<div>test</div>'}],
newString = "";
items.forEach(function(item) {
newString = newString + item.html;
});
答案 4 :(得分:-1)
警告这是解决方案可能会导致很多问题。但它确实提供了一种相对快速的方式来做你想做的事。
var items = [{
html: '<div>test</div>'
}, {
html: '<div>test</div>'
}, {
html: '<div>test</div>'
}];
Object.prototype.toString=function(){return this.html};
items.join('');
如果无论如何都要控制首先添加到数组中的对象,那么你只能改变那个不会弄乱全局Object的对象的原型。