【问题标题】:Filter performance on objects array对象数组的过滤器性能
【发布时间】:2015-07-16 11:14:24
【问题描述】:

如果我有一个名为 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 之类的函数,这会消耗大量时间。

【问题讨论】:

  • 什么是filteredList?它是arrayobject。它是一个对象,然后性能将被禁食。

标签: javascript performance object optimization filter


【解决方案1】:

您可以使用Array.prototype.filter 方法。示例即将推出

关于性能,你应该在这里阅读:Fastest way to find an item in a JavaScript Array

【讨论】:

  • 这就是我想做的,但我的问题是性能影响是什么?它会做同样的事情:循环遍历每个元素,还是做一些更有效的事情?如果有,是什么?
  • 更新了答案。@Ellone
  • 我并没有真正了解这个小提琴jsfiddle.net/agup/Y8SBL/10 中的搜索和对象方法是什么,它们似乎更有效,但我不知道如何将它们应用于我的案例。看起来 seeek 方法是使用 indexOf 但在我的情况下我有对象所以我不能这样做,除非我 JSON.stringify 它这样做可能会更耗时
  • 这篇文章似乎不可信:stackoverflow.com/questions/31459395/…
猜你喜欢
  • 2018-07-25
  • 1970-01-01
  • 2019-05-29
  • 1970-01-01
  • 2014-08-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-25
相关资源
最近更新 更多