我想旋转数组。它能用我的密码。但是我只想旋转positive数。
怎么弄到?
以下是我的尝试:
const ar = [1,2, -8, 3,4,5,-3,-44];
for(let i = 0; i< 3; i++){
ar.unshift(ar.pop());
}
console.log(ar);我得到的结果是:[5, -3, -44, 1, 2, -8, 3, 4];
但是希望得到的结果是:[3,4,-8, 5, 1, 2, -3, -44,],所以只有positive数可以旋转。但是,如果有负数,就不应该触及这个数字。
有什么帮助吗?
发布于 2022-10-31 04:47:11
一种方法是只取正数,然后将其切片并重新组合为“旋转”,然后将正数替换为旋转数组中的元素,然后映射回原始数组。
const arr = [1, 2, -8, 3, 4, 5, -3, -44];
const positives = arr.filter(num => num >= 0);
// Rotate positives by the desired amount
const rotated = positives.slice(2).concat(positives.slice(0, 2));
const output = arr.map(num => num >= 0 ? rotated.shift() : num);
console.log(output);
https://stackoverflow.com/questions/74258800
复制相似问题