20

配列の最後の要素を取得するための簡単な (短い文字単位の) 方法はありますか? (配列が空でないと仮定して)

私は通常、次のことを行います。

last = array[array.length-1]またlast = array[-1..][0]

4

5 に答える 5

20

最新バージョンの CoffeeScript を使用している場合は、これを使用しないでください。代わりにduleによる回答を使用してください。


配列を変更しても構わない場合は、

last = array.pop()

配列を変更したくない場合は、

last = array[..].pop()

にコンパイルされlast = array.slice(0).pop()ます。すでに CoffeeScript や Python スライスに触れたことがある人にとっては、かなり読みやすいと思います。last = array[array.length-1]ただし、大きな配列の場合よりもはるかに遅くなることに注意してください。

私はお勧めしませんlast = array[-1..][0]。短いですが、その意味がすぐにわかるとは思いません。すべて主観ですが。

于 2012-08-22T18:55:22.437 に答える
20

Arrayこのためにプロトタイプを変更するのは簡単で無害です。

Array::last = -> @[@length - 1]

優れたUnderscore.jsを既に使用している場合は、その_.last(arr).

于 2012-08-22T19:46:12.537 に答える
19

もう 1 つの方法は、コーヒーの分解を使用することです。

[..., last] = array

于 2015-05-14T18:41:15.010 に答える
9

duleの提案が好きです。理由は次のとおりです。

http://coffeescript.org/にあるオンラインの coffee to js コンパイラである 'try coffeescript' を使用して、この分解方法をテストしました。

次のコーヒースクリプトが与えられた場合:

arr = [1,2,3,4,5]

[..., last] = arr

コンパイルすると次のようになります。

var arr, last;

arr = [1, 2, 3, 4, 5];

last = arr[arr.length - 1];

これは本当に理想的です。分解構文は非常に明確で簡潔です。コンパイルされた JavaScript は高性能です。これを使用しない理由はありません。

(これをduleの回答の下にコメントとして投稿するほどの評判はないので、コメントですが回答として追加しました。)

于 2015-12-12T16:37:09.197 に答える