下記コードのArray.prototype.filter
の最後にある[0]の意味がわかりません。
これはどういう名称の文法でしょうか。初見の記法でしたので、
お尋ねをさせていただきたいです、ご教授をいただけると幸いです。
const setIsHeaderLabel = (model/*: Sequelize */, columnName/*: string */, value/*: string */) => { if (!value) return; const flag = Object.keys(constant.IS_HEADER_LABEL).filter(k => { return constant.IS_HEADER_LABEL[k] === value; })[0]; model.setDataValue(columnName, flag); };
constant.IS_HEADER_LABEL
は下記だとします。
c.IS_HEADER_LABEL = { 1: '付与する', 0: '付与しない', };
宜しくお願いします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答2件
0
ベストアンサー
ES5ではArray.prototype.filterしか存在しませんでした。
該当するもののうち、先頭のものだけ取り出したい場合は一度filterで配列にしてから[0]
というプロパティにアクセスしていました。
ES2015ではArray.prototype.findがあるのでそちらを使いましょう。
アロー関数使ってるのにArray.prototype.findが存在してないってのもありえません。
JavaScript
1const setIsHeaderLabel = (model/*: Sequelize */, columnName/*: string */, value/*: string */) => { 2 if (!value) return; 3 4 // "0" or "1" or undefinedが結果の候補になっちゃう 5 // このundefinedは駄目そう 6 const flag = Object.keys(constant.IS_HEADER_LABEL).find(k => 7 constant.IS_HEADER_LABEL[k] === value 8 ); 9 10 // 意図を考慮するとこの行が抜けてるんじゃないかな? 11 if (flag == null) return; 12 13 model.setDataValue(columnName, flag); 14};
ついでにアロー関数は{}
を省略すると1つの式をそのままreturnするのでより自然になります。
投稿2019/02/27 05:04
編集2019/02/27 06:23総合スコア21158
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/27 05:25
2019/02/27 07:02
2019/02/27 07:12
退会済みユーザー
2019/03/01 12:38
2019/03/01 13:55 編集
退会済みユーザー
2019/03/04 03:05 編集
0
filterが配列を返すので、要はarray[0]
、つまり配列の最初の要素、です。
投稿2019/02/27 02:36
総合スコア12705
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/02/27 02:41
退会済みユーザー
2019/03/01 12:43
2019/03/04 01:21
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。