js实现翻转
翻转数组
使用 Array.prototype.reverse() 方法可以原地翻转数组。该方法会改变原数组,并返回翻转后的数组。
const arr = [1, 2, 3, 4, 5];
const reversedArr = arr.reverse();
console.log(reversedArr); // [5, 4, 3, 2, 1]
console.log(arr); // [5, 4, 3, 2, 1]
如果需要保留原数组不变,可以先复制数组再翻转。
const arr = [1, 2, 3, 4, 5];
const reversedArr = [...arr].reverse();
console.log(reversedArr); // [5, 4, 3, 2, 1]
console.log(arr); // [1, 2, 3, 4, 5]
翻转字符串
字符串没有直接的翻转方法,可以先将字符串转为数组,翻转后再转回字符串。
const str = 'hello';
const reversedStr = str.split('').reverse().join('');
console.log(reversedStr); // 'olleh'
手动实现翻转
可以通过循环手动实现翻转逻辑,适用于数组或字符串。
function reverseArray(arr) {
const result = [];
for (let i = arr.length - 1; i >= 0; i--) {
result.push(arr[i]);
}
return result;
}
const arr = [1, 2, 3, 4, 5];
console.log(reverseArray(arr)); // [5, 4, 3, 2, 1]
使用递归翻转
递归方法也可以实现翻转,但需要注意栈溢出的风险。
function reverseArrayRecursive(arr, result = []) {
if (arr.length === 0) return result;
return reverseArrayRecursive(arr.slice(0, -1), [...result, arr[arr.length - 1]]);
}
const arr = [1, 2, 3, 4, 5];
console.log(reverseArrayRecursive(arr)); // [5, 4, 3, 2, 1]
翻转对象属性
如果需要翻转对象的键值对,可以使用 Object.entries() 和 reduce 方法。

const obj = { a: 1, b: 2, c: 3 };
const reversedObj = Object.entries(obj).reduce((acc, [key, value]) => {
acc[value] = key;
return acc;
}, {});
console.log(reversedObj); // { '1': 'a', '2': 'b', '3': 'c' }
性能考虑
对于大型数组,reverse() 方法通常比手动实现的循环更快,因为它是原生方法。但在某些特定场景下,手动实现可能更灵活。






