點燈坊

失くすものさえない今が強くなるチャンスよ

使用 reversed 將 List 翻轉

Sam Xiao's Avatar 2024-07-23

Dart 有提供 reversed 將 List 翻轉,但與 ECMAScript 的 reverse() 行為不太一樣。

Dart

void main() {
  var list1 = [1, 2, 3];

  print(list1.reversed); // [3, 2, 1]
  print(list1); // [1, 2, 3]
}
  • reversed : 以 property 形式存在,而非 method
  • reversed 只會回傳翻轉後的結果,並不會影響原本 List 內容
  • toList():reversed 後必須再使用 toList() 之後才會是 List

ECMAScript

let arr = [1, 2, 3]

console.log(arr.reverse()) // [3, 2, 1]
console.log(arr) // [3, 2, 1]
  • reverse():以 method 形式存在,而非 property
  • reverse() 除了回傳翻轉後的結果外,也為影響原本 List 內容

Conclusion

  • Dart 與 ECMAScript 都有提供翻轉 List / Array 的方法,Dart 為 reverse property,而 ECMAScript 為 reverse() method
  • Dart 的 reverse 只會回傳翻轉後的結果,並不會改變原本 List,為 immutable
  • ECMAScript 的 reverse() 除了回傳翻轉後的結果外,還會改變原本 Array,為 mutable