2015-07-16 6 views
0

Если у меня есть массив объектов, называемых filteredList и функции, такие как:производительность фильтра на объекты массива

function buildList(filteredList, p1, p2, p3) { 
    var resultList = []; 

    for (var i =0; i < filteredList.length; i++) { 
     if (filteredList[i].type === 'global' && filteredList[i].p1 === p1 && filteredList[i].p2 === p2 && filteredList[i].p3 === p3) 
      resultList.push(filteredList[i]); 
    } 

    return resultList; 
} 

Что бы разница в производительности, если вместо зацикливания через мой массив, как я, я бы сделать что-то вроде: filteredList.filter(rebuildList)

rebuildList является функцией проверки тех же условиях, чем buildList

Будет ли это сделать то же самое? (Проникновение через каждый элемент)

Можете ли вы придумать более оптимизированный и эффективный способ сделать это? Я часто вызываю функцию, например buildList, в моем проекте, и она потребляет много времени.

+0

Что такое 'filteredList'? Это «массив» или «объект». Это объект, тогда исполнение будет поставлено. –

ответ

1

Вы можете использовать метод Array.prototype.filter. Пример скоро

Что касается производительности, вы должны прочитать здесь: Fastest way to find an item in a JavaScript Array

+0

Это то, что я собираюсь сделать, но мой вопрос в том, каково будет влияние производительности? Будет ли он делать то же самое: перебирать каждый элемент или делать что-то более эффективным? Если да, то ? – Ellone

+0

Обновленный ответ. @ Ellone –

+0

Я не смог получить то, что является поисковым и объектным подходом в этой скрипке. Http://jsfiddle.net/agup/Y8SBL/10/ Они кажутся более эффективными, но я не знаю как применить их к моему делу. Похоже, что подход seeek - это использование 'indexOf', но в моем случае у меня есть объекты, поэтому я не могу этого сделать, если я не' JSON.stringify', и это может быть еще более трудоемким для этого. – Ellone

Смежные вопросы