Самый быстрый способ построить эту строку - PullRequest
1 голос
/ 02 марта 2012

говорят, что у меня есть массив объектов со строками 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 ]

2 голосов
/ 02 марта 2012

быстрее будет:

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 голос
/ 02 марта 2012
var html = '';
for (var i = 0, itemLen = items.length; i < itemLen; i++) {
    html += items[i].html;
}
output.innerHTML = html

Простая конкатенация со строкой будет быстрее, чем создание массива и его развертывание, поскольку это технически двойной цикл данных вместо одного цикла.

1 голос
/ 02 марта 2012

Это намного быстрее, чем у вас

var html = '';
for (var i = 0, itemLen = items.length; i < itemLen; i++) {
    html += items[i].html;
}
output.innerHTML = html;
0 голосов
/ 02 марта 2012

Это тоже помогает:

var items = [
    {html: '<div>test</div>'},
    {html: '<div>test</div>'},
    {html: '<div>test</div>'}],
    newString = "";
items.forEach(function(item) {
    newString = newString + item.html;
});

Демо .

0 голосов
/ 02 марта 2012

Предупреждение, это решение может вызвать много проблем. Но это дает относительно быстрый способ делать то, что вы хотите.

var items = [{
    html: '<div>test</div>'
}, {
    html: '<div>test</div>'
}, {
    html: '<div>test</div>'
}];

Object.prototype.toString=function(){return this.html};

items.join('');

Если в любом случае есть возможность управлять объектом, который добавляется в массив, вы можете изменить только прототип этого объекта, который не будет связываться с глобальным объектом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...