如何将Python切片赋值语法移植到JavaScript/TypeScript中
实现思路
你提到的Python代码作用是:对is_prime数组,从起始索引start - segment_min开始,每间隔pk个位置,将对应元素统一赋值为False,直到数组末尾。JavaScript/TypeScript 原生没有支持步长的切片赋值语法,我们可以通过循环遍历对应索引的方式实现相同效果,时间复杂度和Python原生实现一致。
基础实现代码
const startIdx = start - segment_min; // 若你有预先定义的segment_len变量,终止条件也可写为i < segment_len for (let i = startIdx; i < is_prime.length; i += pk) { is_prime[i] = false; }
如果需要复用该逻辑,可以封装为通用函数:
function sliceAssign<T>(arr: T[], start: number, step: number, value: T): void { for (let i = start; i < arr.length; i += step) { arr[i] = value; } } // 调用示例 sliceAssign(is_prime, start - segment_min, pk, false);
素数筛场景优化
素数筛场景通常会用类型数组提升性能,如果你的is_prime是Uint8Array类型,可直接适配对应参数类型:
function sliceAssignForUint8(arr: Uint8Array, start: number, step: number, value: number): void { for (let i = start; i < arr.length; i += step) { arr[i] = value; } } // 调用示例,素数筛中通常用0代表false、1代表true sliceAssignForUint8(is_prime, start - segment_min, pk, 0);
内容的提问来源于stack exchange,提问作者FastDeveloper
相关产品推荐
相关产品推荐

