Javascript 数组过滤器和映射同时进行?

Javascript 数组过滤器和映射同时进行?,javascript,Javascript,我觉得自己像个白痴,但我需要过滤我的数组,然后映射这些值,但这是O(2N),在O(N)中做这一切更有意义,但我找不到一个stock数组。prototype函数 array.filter(item => !!item.revenue).map(item => item.revenue) 我总是可以编写自己的方法,但最好使用性能优化的阵列。原型阵列,如果有,如何 怎么样 粘贴这两个操作的代码,我们将检查如何以一种方式执行,好吗?听起来你想要另一种方法,比如reduceDoes,它确实值

我觉得自己像个白痴,但我需要过滤我的数组,然后映射这些值,但这是O(2N),在O(N)中做这一切更有意义,但我找不到一个stock数组。prototype函数

array.filter(item => !!item.revenue).map(item => item.revenue)
我总是可以编写自己的方法,但最好使用性能优化的阵列。原型阵列,如果有,如何

怎么样


粘贴这两个操作的代码,我们将检查如何以一种方式执行,好吗?听起来你想要另一种方法,比如reduceDoes,它确实值得用一个额外的迭代来交换可读性?@AlexeiLevenkov“O(n)和O(2n)是等价的”——常数仍然很重要
O(n)
vs
O(1000000000n)
:后者的运行速度要慢100万倍。也不要假设原型方法会像简单循环一样快<代码>而循环vs
forEach
是一个很好的例子粘贴这两个操作的代码,我们将检查如何以一种方式执行,好吗?听起来你想要另一种方法,比如reduce,它确实值得用一次额外的迭代来交换可读性?@AlexeiLevenkov“O(n)和O(2n)是等价的”——常数仍然很重要
O(n)
vs
O(1000000000n)
:后者的运行速度要慢100万倍。也不要假设原型方法会像简单循环一样快
虽然循环vs
forEach
是一个很好的例子,但我看到了reduce,但没有意识到可以构造一个数组,虽然只有一个变量,但要感谢它的缺点是,与map不同,它不预分配。因为它不知道将过滤多少项。@Oriol“缺点”与什么相比?仅使用
Array.prototype.map
无法解决此问题。仅在nodejs 6.2.2(V8 5.0.71.52)上测试了它们,这比filter和map快了4倍左右。@DavidConrad很高兴您使用一些统计数据回来。dang,我看到了reduce,但没有意识到您可以构造一个数组,虽然只考虑了一个变量,谢谢。缺点是,与map不同,它没有预先分配。因为它不知道将过滤多少项。@Oriol“缺点”与什么相比?仅使用
Array.prototype.map
无法解决此问题。仅在nodejs 6.2.2(V8 5.0.71.52)上测试了这两个版本,速度大约是筛选和映射的4倍。@DavidConrad很高兴您能用一些统计数据回来。
arr.reduce((newArr, item) => {
    if (!!item.revenue) {
        newArr.push(item.revenue)
    }
    return newArr
}, []);