🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

3回答

944閲覧

配列のインデックスに対して特定の値の時のみに処理を行いたい

bravo

総合スコア14

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2019/12/03 12:57

タイトルのとおりです。
例えば以下のような場合にスッキリと書くにはどうしたらいいでしょうか?

Javascript

1var array=["a","b","c","d","e","f"]; 2$.each(array,function(index,value){ 3 if(//ここでindexが0,1,4の時のみtrueにしたい 4    ){ 5 //処理 6  } 7})

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2019/12/03 13:02

スッキリの定義はなんですか?
2KOH

2019/12/03 13:15

フリ○クでも食べれば、スッキリと書けると思います。 という冗談は置いておくとして、少なくとも、 //ここでindexが0,1,4の時のみtrueにしたい の部分をコメントにせずに「スッキリ」書けていない状態のコードを提示してください。
guest

回答3

0

ベストアンサー

こんにちは

index の値が 0 または 1 または 4 のとき true となり、それ以外のときは false になる式は、includes を使えば

javascript

1[0, 1, 4].includes(index)

と書けます。以下 node での実行例です。

$ node

Welcome to Node.js v12.7.0.
Type ".help" for more information.

[0, 1, 4].includes(1)

true

[0, 1, 4].includes(2)

false

投稿2019/12/03 13:10

jun68ykt

総合スコア9058

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

includesよりスッキリしませんがsomeを使って以下のようにも書けます。

JavaScript

1if([0, 1, 4].some(v => v === index)) {

また配列の要素数が32以下(indexの最大値が高々31)の条件下であれば、以下のような事前計算により…

JavaScript

1[0, 1, 4].reduce((acc, v) => acc + (1 << v), 0); 2//=> 19

以下のように書けます。

JavaScript

1if(19 & 1 << index) {

書いといてなんですが意図がコードに全く現れないのでやめといたほうがいいと思います。
スッキリの探求でした。

投稿2019/12/03 18:03

shinji709

総合スコア805

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ここでindexが0,1,4の時のみtrueにしたい

if の 条件式 についてですが、

候補となる値が複数ある場合、その値を配列に含めておき、indexOf() を使う方法もあります。
候補の中に含まれるなら候補リストのインデックスを/含まれないなら-1を返すので

候補値の配列を const allowIndex = [0, 1, 4]; としたとき、

  1. allowIndex.indexOf( index )!==-1
  2. !!~allowIndex.indexOf( index )

のように利用できます。

javascript

1const allowIndex = [0, 1, 4]; 2$.each(array,function(index,value){ 3 4 if( !!~allowIndex.indexOf( index ) ){ 5 //処理 6 console.log( index, value ); 7  } 8})

登場の経緯から jQuery.each() は Arrayオブジェクトの配列要素を走査する関数の実装に少なからず影響を与えたAPIです。是非、他の回答者さんの示す Array のメソッドも確認してみてください。
また、シフト演算まで駆使する方法(shinji709さんの2つ目以降の例)は、処理速度を最重視した方法です。

投稿2019/12/03 21:55

AkitoshiManabe

総合スコア5434

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問