有一个排序需求,需要实现:当前数据往后移动N位或者向前移动N位。想了半天,没想到好的解决办法。
操作对象是数据库一条数据
js可能如下处理:
const array = [1, 2, 4, 5, 6, 7, 8, 9, 3, 10];
const arrayMoveTo = (arr, start, end) => {
if(start > arr.length || end > arr.length || start < 1 || end < 1) {
throw new Error('');
}
const temp = arr.splice(start - 1, 1)[0];
arr.splice(end - 1, 0, temp);
return arr;
};
console.log(arrayMoveTo(array, 9, 3));
//[ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ]
哈哈哈 今天刚好看到这种提 这个叫做旋转数组 我发发发 很简便的代码 忘采纳哦 最近才开始玩 需要刷点分
var numArr = [1,2,3,4,5,6,7]
var rotate = function(nums, k) {
var a = nums.splice(-k,k)
nums.unshift(...a)
return nums
}
var rotate2 = function(nums, k) {
nums.splice(0,0,...nums.splice(-k,k))
return nums
}
2 回答2.5k 阅读✓ 已解决
2 回答1.1k 阅读✓ 已解决
1 回答1.6k 阅读✓ 已解决
1 回答847 阅读✓ 已解决
2 回答521 阅读✓ 已解决
940 阅读
2 回答565 阅读
核心思想是将数组依据原始位置和新位置”切割“成几部分,调整位置后重新合并,不涉及排序。
并且,我给的方案能左移也能右移动。
PS. 看到题目变更,目标是数据库,欲哭无泪!