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

基于两个数组创建指定布尔数组的最高效实现方案

高效实现方案

要实现这个需求,最高效低资源的方式是利用Set的O(1)查找特性,避免重复遍历或冗余操作,具体步骤如下:

  1. 先把arrayB转换成Set,自动去重(如果arrayB有重复索引的话,避免重复赋值浪费资源),同时让索引查找速度拉满:
const indexSet = new Set(arrayB);
  1. 生成arrayC有两种高效写法:

写法一:直接映射生成

用Array.from一次性生成目标数组,逻辑清晰且高效:

const arrayC = Array.from({ length: arrayA.length }, (_, index) => indexSet.has(index));

写法二:先填充再修改

先创建全false数组,再遍历Set修改指定索引,内存占用和性能和写法一接近,适合需要先初始化再做其他操作的场景:

const arrayC = new Array(arrayA.length).fill(false);
indexSet.forEach(idx => arrayC[idx] = true);

性能对比

  • 传统的forEach/for循环遍历arrayB赋值:如果arrayB存在重复索引,会做重复赋值操作;且每次查找(如果是遍历比对的话)是O(n)。
  • 用Set的方式:查找是O(1),自动去重,不管arrayB多大,索引判断都极快,数据量越大,性能优势越明显。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 23:36:04