我感觉自己像个白痴,但我需要过滤我的数组,然后映射这些值,但这样做的时间复杂度是O(2N),如果能够使用一个常规的Array.prototype函数来完成所有操作的时间复杂度为O(N)会更合理,但我找不到这样的函数。
array.filter(item => !!item.revenue).map(item => item.revenue)
我总是可以自己编写方法,但最好使用经过性能优化的Array.prototype方法,如果有的话。
我感觉自己像个白痴,但我需要过滤我的数组,然后映射这些值,但这样做的时间复杂度是O(2N),如果能够使用一个常规的Array.prototype函数来完成所有操作的时间复杂度为O(N)会更合理,但我找不到这样的函数。
array.filter(item => !!item.revenue).map(item => item.revenue)
我总是可以自己编写方法,但最好使用经过性能优化的Array.prototype方法,如果有的话。
那么关于 Array.prototype.reduce()
呢?
arr.reduce((newArr, item) => {
if (!!item.revenue) {
newArr.push(item.revenue)
}
return newArr
}, []);
Array.prototype.map
解决问题。 - zerkmsflatMap
可用于过滤和映射组合的情况:
arr.flatMap(item => item.revenue || [])
O(n)
和O(1000000n)
之间的区别:后者会运行慢大约1百万倍。 - zerkmswhile
循环和forEach
是一个很好的例子。 - charlietfl