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

如何仅对数组中的positive numbers进行旋转操作?

仅旋转数组中的正数元素(保持负数位置不变)

要实现仅旋转正数、保留负数位置的需求,核心思路是先分离出正数单独处理旋转,再将旋转后的正数填充回原数组的对应位置。以下是具体解决方案:

const ar = [1,2, -8, 3,4,5,-3,-44];
const rotateTimes = 3;

// 1. 提取原数组中的所有正数
const positives = ar.filter(num => num > 0);
// 2. 对正数数组执行指定次数的右旋转(和原代码逻辑一致)
for(let i = 0; i < rotateTimes; i++){
  positives.unshift(positives.pop());
}
// 3. 将旋转后的正数填充回原数组,负数位置保持不变
let posIndex = 0;
const result = ar.map(num => {
  if(num > 0){
    return positives[posIndex++];
  }
  return num;
});

console.log(result); // 输出: [3,4,-8,5,1,2,-3,-44]

代码说明

  • 提取正数:通过filter方法筛选出原数组中的所有正数,得到子数组[1,2,3,4,5]。
  • 旋转正数数组:沿用你原有的旋转逻辑(每次弹出最后一个元素并插入到开头),执行3次后正数数组变为[3,4,5,1,2]。
  • 填充回原数组:使用map遍历原数组,遇到正数时从旋转后的正数数组中按顺序取元素替换,负数直接保留原数值,最终得到符合预期的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 00:55:20