•  阅读 3 分钟

在 JavaScript 中怎样倒序数组

如果你需要倒序数组元素的顺序,这里有一种代码技巧是你做到。你可以使用数组方法 “reverse()” ⏪

尝试一种新的称谓 #CodeRecipes。我通常 google 想要解决问题。这些是你应该保持习惯技巧,因为不是单方面的 “如果” 你使用它,而是 “当” 你使用它 😉

const benjamin = ['👶', '👦', '👨', '👴']

const benjaminButton = benjamin.reverse()

console.log(benjaminButton)
// ['👴', '👨', '👦', '👶']

修改的原数组

一件需要注意的事情是 Array.reverse() 会修改原数组。

const originalArray = ['a', 'b', 'c']
const newArray = originalArray.reverse()

console.log(originalArray) // [ 'c', 'b', 'a' ]
console.log(newArray) // [ 'c', 'b', 'a' ]```

怎样倒序数组却不改变原数组

有一些不修改原数组的方法。让我们了解 👀

使用 slice 和 reverse

const originalArray = ['a', 'b', 'c']
const newArray = originalArray.slice().reverse()

console.log(originalArray) // ['a', 'b', 'c']
console.log(newArray) // [ 'c', 'b', 'a' ]

使用扩展操作符(spread)和 reverse

const originalArray = ['a', 'b', 'c']
const newArray = [...originalArray].reverse()

console.log(originalArray) // ['a', 'b', 'c']
console.log(newArray) // [ 'c', 'b', 'a' ]

使用 reduce 和扩展操作符(spread)

const originalArray = ['a', 'b', 'c']
const newArray = originalArray.reduce((accumulator, value) => {
  return [value, ...accumulator]
}, [])

console.log(originalArray) // ['a', 'b', 'c']
console.log(newArray) // [ 'c', 'b', 'a' ]

使用 reduceRight 和扩展操作符(spread)

const originalArray = ['a', 'b', 'c']
const newArray = originalArray.reduceRight((accumulator, value) => {
  console.log(value)
  return [...accumulator, value]
}, [])

console.log(originalArray) // ['a', 'b', 'c']
console.log(newArray) // [ 'c', 'b', 'a' ]

或者使用 push

const originalArray = ['a', 'b', 'c']
const newArray = originalArray.reduceRight((accumulator, value) => {
  accumulator.push(value)
  return accumulator
}, [])

console.log(originalArray) // ['a', 'b', 'c']
console.log(newArray) // [ 'c', 'b', 'a' ]

社区支持

@aminnair:我决定测试想到的另一种方法,下面是结果:

with slice and reverse: 83.085ms
With one loop: 309.763ms

源代码以及测试情况在这里

资源

本文由 吳文俊 翻译,原文地址 How to reverse an array in JavaScript?

> 分享并评论 Twitter / Facebook
> cd ..