js翻转数组
- reverse()方法翻转
- 反向添加数组
- 数组首尾交换
- unshift()向数组头部添加
考点:在 数组首尾交换,reverse()方法肯定不是,reverse()是js方法,反向添加数组 和 unshift()向数组头部添加元素, 创建了新数组空间,只有数组首尾交换是在 当前数组上操作,难点也在当前数组上操作。
1. reverse()
利用 js方法reverse()方法翻转数组,就一句话
/**
* js的reverse()方法 翻转数组
* @param arr
* @returns {*}
*/
function f1(arr) {
return arr.reverse()
}
2. 反向添加数组
创建空数组,循环遍历,从原数组的长度-1,通过 索引 插入到 新数组
/**
* 反向添加数组
* @param arr
* @returns {*[]}
*/
function f2(arr) {
let newArr = []
for (let i = 0; i < arr.length; i++) {
newArr[arr.length - 1 - i] = arr[i]
}
return newArr
}
3. 数组首尾交换
把数组的索引0 和 数组的长度-1 进行交换
【注意:首尾交换,交换到arr长度一半的时候就交换成功,继续交换就又交换回来了】
/**
* 数组首尾交换元素
*
* 注意:首尾交换,交换到arr长度一半的时候就交换成功
* 让交换走玩 相当于 又交换回来了
* @param arr
* @returns {*}
*/
function f3(arr) {
// 在首尾交换的变量时候,在交换到arr.length一半的时候数组已经翻转成功
// 必须取一半就停止交换,不然 数组继续交换 就是没换了
// 因此 在这里借助一下 变量j ,每次循环j-1 直到i 大于j 说明刚好走了一半了
let j = arr.length - 1
for (let i = 0; i < arr.length; i++) {
// console.log(`循环:${i} ${arr[i]} ${arr[arr.length - 1 - i]} ${arr}`)
let temp = arr[i]
arr[i] = arr[j]
arr[j] = temp
j--
if (i > j) {
break
}
}
return arr
}
4. unshift()向数组头部添加
循环是从 左到右 开始,利用unshift()从头部开始往新数组插入
/**
* 利用unshift() 向数组头部插入元素
*
* 解析:每次循环是0开始,利用unshift()从头部开始插入,实现翻转数组效果
* @param arr
* @returns {*[]}
*/
function f4(arr) {
let newArr = []
arr.forEach(v => {
newArr.unshift(v)
})
return newArr
}