You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中是否有高效方法可从数组内提取全部指定类型的值?

性能层面结论

你当前的实现已经是最优水平,不存在本质上效率更高的方案:

  • 时间复杂度固定为O(n):要筛选所有符合条件的元素必须完整遍历一次数组,没有办法降低时间复杂度等级
  • 不同遍历方法的性能差异极小:forEach、for循环、filter方法的底层都是V8等JS引擎高度优化过的实现,只有在数组长度超过百万级的极端场景下才会出现可感知的性能差,普通业务场景完全不需要考虑
  • 极端性能优化方案:如果确实要处理超大数组,可以用普通for循环减少回调函数调用开销,性能能提升5%~10%:
const newArray = [];
const arrLength = oldArray.length;
for (let i = 0; i < arrLength; i++) {
  const item = oldArray[i];
  if (typeof item === 'string') newArray.push(item);
}

更简洁的写法

如果你想要类似Python列表推导的简洁写法,直接用JS内置的filter方法即可,逻辑和你现有的实现完全等价,可读性更强:

const newArray = oldArray.filter(item => typeof item === 'string');

内容的提问来源于stack exchange,提问作者wibbuffey

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 17:06:03