LoginSignup
3
0

More than 3 years have passed since last update.

sliceの使い方を間違えて失敗した話

Last updated at Posted at 2019-04-26

paizaの問題を解いていた時の一幕

※paizaの利用規約を守るために標準関数のsliceにだけ焦点を当てています。
 表示されているコードは実際の問題とは関係ありません。

私「Arrayの必要な範囲だけindexOfで評価したいからsliceで一部だけ一時変数に代入したらよかね」

// 3番目含む2つのデータが必要
var a = 3, b = 2;
var data = ["0","1","0","1","1"];
let tmp = data.slice(a, b);

私「よし、こんな感じで処理したらよかろ」
\提出前動作確認ポチィ!/

paiza「お疲れさま、だが貴様は間違っている( ˘ω˘ )!」

私「(・ω・)!?」

悩み過ぎて頭痛を発症した上時間切れして夕飯とお風呂を済ませた後。

私「処理の流れはこれで大丈夫なはずなのになんで結果が違うんだ!?」
私「冷静に考えてもう一度printfデバッグしてみるか( ˘ω˘ )」
私「ファッ!?なんでtmpの中身が空なんだ!?」
私「sliceって開始位置(a)と取得したいデータの終わり(b)を渡せば良かとやないの?!」
私「何で私はこんな勘違いをしていたのだろう……」(MDNを見直しながら)

// 3番目含む2つのデータが必要
var a = 3, b = 2;
var data = ["0", "1", "0", "1", "1"];
let tmp = data.slice(a, a + b);

私「このうっかりミスが無ければきっとこの問題時間内に解けてたよなぁ」

結論

使用例はきっちり見た上でちゃんと使いましょう。
(当たり前な話である。)

3
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0