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

JavaScript实现返回所有为2的幂的索引的数组问题求助

问题分析

你当前代码的核心错误在于逻辑和题目需求不匹配:

  • 题目要求筛选索引为2的幂对应的数组元素,你写的判断条件是元素值能被2^i整除且不等于1,和要求完全无关
  • 遍历起点错误,0不是2的幂,不需要从i=0开始判断
  • 未声明newArray的变量关键字,会隐式创建全局变量,存在作用域污染风险

解决思路

判断正整数是2的幂可以用位运算技巧:满足n & (n - 1) === 0的正整数就是2的幂,原理是2的幂的二进制表示仅最高位为1,减1后所有低位变为1,按位与结果为0。

修正后代码

function secondPower(arr) {
    // 返回所有索引为2的幂对应的元素构成的数组
    const newArray = [];
    // 从索引1开始遍历,0不是2的幂
    for(let i = 1; i < arr.length; i++){
        if((i & (i - 1)) === 0) {
            newArray.push(arr[i]);
        }
    }
    return newArray;
}

验证结果

调用secondPower([1, 2, 3, 4, 5, 6, 7, 8])时,符合条件的索引为1、2、4,对应元素为2、3、5,返回结果为[2,3,5],和预期一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:36:05