Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ES2022: StringとArrayの .at() #1367

Closed
1 task
azu opened this issue Dec 24, 2021 · 6 comments · Fixed by #1392
Closed
1 task

ES2022: StringとArrayの .at() #1367

azu opened this issue Dec 24, 2021 · 6 comments · Fixed by #1392
Labels
Lang: ES2022 ECMAScript 2022 Status: PR Welcome Pull Requestを歓迎する状態 Status: Ready for PR Pull RequestしてOKな状態

Comments

@azu
Copy link
Collaborator

azu commented Dec 24, 2021

.at()

追加する。

基本的に length - 1.at() に置き換える。

DOM APIについては、item() 名前は標準化失敗した気がするし、触れなくて良い気がする。

https://github.com/tc39/proposal-relative-indexing-method#dom-justifications
https://developer.mozilla.org/ja/docs/Web/API/NodeList/item

Originally posted by @azu in #1337 (comment)

TODO

@azu azu added the Lang: ES2022 ECMAScript 2022 label Dec 24, 2021
@azu azu mentioned this issue Dec 24, 2021
17 tasks
@azu azu added the Status: Ready for PR Pull RequestしてOKな状態 label Jan 18, 2022
@azu
Copy link
Collaborator Author

azu commented Jan 22, 2022

@azu
Copy link
Collaborator Author

azu commented Jan 22, 2022

調査

@azu
Copy link
Collaborator Author

azu commented Jan 22, 2022

書籍内で array[-1] がどうなるかの解説があるか

配列のlengthプロパティは配列の要素の数を返します。 そのため、配列の最後の要素へアクセスするには array.length - 1 をインデックスとして利用できます。

が近いけど。
インデックスアクセスがat()によって全て置き換わるとは思えないので、

Array.prototype.at というセクションを足すのが無難かなー
length - 1 もdeprecatedといえるほどまだ浸透していないし、関数callだからコストはどうなんだろとかある

@azu
Copy link
Collaborator Author

azu commented Jan 22, 2022

.at(-1) 以外のユースケースがあるか

ほぼこれ一択な感じがする

@azu
Copy link
Collaborator Author

azu commented Jan 22, 2022

やること

  • https://jsprimer.net/basic/array/#create-and-access の次に Array.prototype.at というセクションを追加する
    • length - 1 と書いていたけど、ES2022ではatが追加されました
    • at(-1)length - 1 は同等の意味です。
    • なぜatが追加されたかというと
      • [-1]"-1" というプロパティアクセスになるため、最後の要素にアクセスするのには使えません。
      • const o = { "-1": value } 的なコード例を入れる? 冗長かな?
      • 最後の要素にアクセスにlength -1 を使うと2回arrayを参照する必要があって手間です。(若干直感的ではないです)
      • 最後の要素にアクセスというわかりやすい方法として at が導入されました
        • 📝 元々は .last() というメソッドが提案されてたけど、at という汎用的な形になった。
  • https://jsprimer.net/basic/string/#get-char String.prototype.atのセクションを追加する
    • 配列とほぼ同じ軽いatの説明。配列にリンクする([-1] や lengthの話は省く )
    • at(0)とかat(-1) でアクセスできますというコード例だけで十分
  • https://jsprimer.net/basic/class/#extends-built-in で firstとlastという題材も扱ってるので .at() を使うようにする

@azu
Copy link
Collaborator Author

azu commented Feb 6, 2022

#1163
sliceも若干関係する話に思えてきた。

@azu azu added the Status: PR Welcome Pull Requestを歓迎する状態 label Feb 7, 2022
@azu azu closed this as completed in #1392 Feb 12, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Lang: ES2022 ECMAScript 2022 Status: PR Welcome Pull Requestを歓迎する状態 Status: Ready for PR Pull RequestしてOKな状態
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant