构建此字符串的最快方法

时间:2012-03-02 18:44:24

标签: javascript performance

说我有一个带有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('');

5 个答案:

答案 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;
});

Demo

答案 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的对象的原型。