前言
没有一个冬天不可逾越,没有一个春天不会来临。最慢的步伐不是跬步,而是徘徊,最快的脚步不是冲刺,而是坚持。
这是我参与「掘金日新计划 · 4 月更文挑战」的第5天,点击查看活动详情。
数组旋转K步
//函数逻辑实现
function rotate(arr,k){
const length=arr.length
if(!k||length==0) return arr;
const step =Math.abs(k%length)//abs 取绝对值
for(let i=0;i<step;i++){
//pop() 方法是删除最后一个元素并返回删除的元素
//unshift 向前添加一个元素
const n=arr.pop()
if(n !=null){
arr.unshift(n)
}
}
return arr
}
//功能测试
const arr=[9,8,7,6,5,4,3]
const arr1=rotate(arr,3)
console.log(arr1)// 5 4 3 9 8 7
实现方法二
function ratate1(arr,k){
const length=arr.length
if(!k ||length===0)return arr
const step=Math.abs(k%length)
const part1=arr.silce(-step)//截取后面多少位
const part2=arr.silce(0,length-step)//截取前面几位
const parts=part1.concat(part2)//把1和2拼接在一起
return part3
}
//功能测试
const arr=[9,8,7,6,5,4,3]
const arr1=rotate1(arr,3)
console.log(arr1)//5 4 3 9 8 7
单元测试
import {rotate,rotate1}from '文件'
describe('数组旋转',()=>{
it('正常情况',()=>{
const arr=[1,2,3,4,5,6]
const k=3
cosnt res=ratate(arr,k)
expect(res).toEqual([4,5,6,1,2,3])//断言 这两个数组是否相等
})
it('数组为空',()=>{
const res=rotate([],3)
expect(res).toEqual([])
})
it('k为负值',()=>{
const arr=[1,2,3,4,5,6]
const k=3
cosnt res=ratate(arr,k)
expect(res).toEqual([4,5,6,1,2,3])//断言 这两个数组是否相等
})
it('k不是数字',()=>{
const arr=[1,2,3,4,5,6]
const k=‘ABC’
cosnt res=ratate(arr,k)
expect(res).toEqual(arr)//断言 arr
})
it('k是0',()=>{
const arr=[1,2,3,4,5,6]
const k=0
cosnt res=ratate(arr,k)
expect(res).toEqual(arr)//断言 arr
})
})
总结
初学单元测试。