【2026年9月最新】jQuery $.inArray()で配列要素を検索する方法を完全解説|使い方・注意点・モダンJS代替まで

【2026年9月最新】jQuery $.inArray()で配列要素を検索する方法を完全解説|使い方・注意点・モダンJS代替まで

jQueryで配列の中に特定の値が含まれているかを調べたいとき、多くの人が最初にたどり着くのが$.inArray()です。しかし、いざ使ってみると「見つかったはずなのにif文がfalseと判定される」「文字列の'1'を探しても見つからない」といった、名前からは想像しにくいクセに戸惑うことがあります。

この記事では、$.inArray()の基本構文と正しい使い方から、初心者がつまずきやすい「戻り値0のtruthy罠」、型の厳密な比較仕様、部分一致検索の実装方法まで丁寧に解説します。さらに、ネイティブJavaScriptのindexOf・includes・findIndexとの比較や、2026年現在の実務における「jQueryに頼らない書き方」への移行判断、そしてClaude Codeを使ったレガシーコードの改修効率化まで踏み込んで紹介します。

代表菅澤 代表菅澤
$.inArray()は名前だけ見ると「配列の中にあるかどうか」を素直に教えてくれそうですが、戻り値の仕様を正しく理解していないと、思わぬバグの温床になります。今日はその落とし穴を全部つぶしていきましょう。
AI鬼管理山崎 AI鬼管理山崎
合わせて、2026年の実務で$.inArray()をこれから新しく書くべきかどうかという判断基準も紹介します。レガシーコードの保守と、新規開発での書き方、両方の視点で読んでいただけます。
✔️$.inArray()の基本構文と、戻り値がインデックス番号である理由
✔️戻り値0のtruthy罠を回避する正しい判定方法
✔️型(データ型)まで厳密に比較される仕様と注意点
✔️部分一致検索を実現する具体的な実装方法
✔️Array.indexOf() / includes() / findIndex()とのネイティブJS比較
✔️Claude Codeを使ったjQueryレガシーコードの改修とGENAI社内の実例
AI社員AIKATA|月30万円の定額で御社の業務をまるごと巻き取ります(無料相談60分)御社が減らせる固定費は月いくらか|公式LINEで質問に答えるだけ(無料・約1分)
📌 この記事の結論
【2026年9月最新】jQuery $.inArray()で配列要素を検索する方法を完全解説|使い方・注意点・モダンJS代替まで
jQueryの$.inArray()で配列要素を検索する方法を、基本構文・型の注意点・戻り値0のtruthy罠から、Array.indexOf/includes/findIndexとの比較、Claude Codeを使ったレガシーコード改修まで解説します。

01 $.inArray()とは何か 配列の中から値の位置(インデックス)を探すメソッド

$.inArray()は、jQueryが提供するユーティリティメソッドの1つで、指定した値が配列の中に存在するかどうかを調べ、見つかった場合はそのインデックス番号(0から始まる位置)、見つからなかった場合は-1を返します。

// 基本構文
$.inArray(検索したい値, 対象の配列, [検索を開始するインデックス])

// 例
var fruits = ['apple', 'banana', 'orange'];
var index = $.inArray('banana', fruits);
console.log(index); // 1('banana'は0番目から数えて1番目にある)

📚 用語解説

ユーティリティメソッド:jQueryが提供する機能のうち、HTML要素の操作(DOM操作)を伴わず、配列やオブジェクトなどのデータそのものを扱うための汎用的な関数群のこと。$.inArray()のほか、$.each()(繰り返し処理)、$.grep()(配列の絞り込み)、$.extend()(オブジェクトの結合)などがある。$()で要素を選択してから呼び出す通常のjQueryメソッドとは異なり、$.から直接呼び出す点が特徴。

注目してほしいのは、戻り値が「見つかった/見つからない」を表す真偽値(true/false)ではなく、インデックス番号(数値)であるという点です。この設計が、次の章で説明する典型的なバグの原因になります。

1-1. なぜjQueryにこのメソッドが用意されたのか

$.inArray()は、jQueryの登場当時(2000年代後半)、多くのブラウザでネイティブJavaScriptのArray.prototype.indexOf()がまだサポートされていなかったという歴史的経緯から用意されたメソッドです。当時主流だった古いInternet ExplorerなどでindexOf()が使えなかったため、jQueryが差分を吸収する形で提供していました。

💡 現在のjQuery公式ドキュメントでの位置づけ

jQuery公式リファレンスでも、$.inArray()は「ネイティブのindexOf()メソッドとほぼ同等の動作をする」と説明されています。つまり、現在のモダンブラウザ環境では、$.inArray()は実質的にArray.prototype.indexOf()の薄いラッパーという位置づけになっています。

02 $.inArray()の基本的な使い方 3つの引数と戻り値のパターンを押さえる

2-1. 引数の詳細

引数必須/任意説明
value必須検索したい値
array必須検索対象の配列
fromIndex任意検索を開始する位置(省略時は0番目から)
var numbers = [10, 20, 30, 20, 40];

// 通常の検索(最初に見つかったインデックスを返す)
console.log($.inArray(20, numbers)); // 1

// fromIndexを指定して、2番目以降から検索
console.log($.inArray(20, numbers, 2)); // 3

// 見つからない場合
console.log($.inArray(99, numbers)); // -1

fromIndexを指定すると、配列の途中から検索を開始できます。上記の例のように同じ値が複数含まれる配列で、「最初の1つ以外の出現位置も知りたい」ときに活用できます。

2-2. 戻り値のパターンを整理する

状況戻り値意味
配列の先頭(0番目)で見つかった0見つかった(インデックス0)
配列の途中で見つかった1以上の整数見つかった(そのインデックス番号)
見つからなかった-1見つからなかった
⚠️ 「0」は見つかった証拠、「-1」だけが見つからなかった証拠

$.inArray()の戻り値で「見つからなかった」ことを意味するのは-1だけです。0は「先頭で見つかった」という正常な結果であり、見つからなかったことを意味しません。この違いを誤解していると、次の章で説明する重大なバグを引き起こします。

AI鬼管理山崎 AI鬼管理山崎
ここで一度立ち止まって、次の章の「truthy罠」を読む前に、自分が過去に書いたコードでif ($.inArray(...))のような書き方をしていないか思い出してみてください。かなりの確率で、思い当たる節があるはずです。

03 【最重要】戻り値0のtruthy罠 初心者もベテランも一度は踏む定番のバグ

$.inArray()に関する最も有名で、実務でも頻繁に発生するバグが「戻り値が0のときの条件分岐の誤り」です。以下のコードを見てください。

var fruits = ['apple', 'banana', 'orange'];

// 一見正しそうに見えるが、実はバグがある書き方
if ($.inArray('apple', fruits)) {
    console.log('appleが見つかりました');
} else {
    console.log('appleは見つかりませんでした'); // ← こちらが実行されてしまう!
}

'apple'は配列の先頭(インデックス0)にあるため、$.inArray()は0を返します。しかしJavaScriptにおいて0は偽(falsy)として扱われるため、if (0)はfalseと判定され、意図に反して「見つかりませんでした」の分岐が実行されてしまいます。

📚 用語解説

truthy / falsy:JavaScriptにおいて、真偽値以外の値がif文などの条件式に置かれたときに、true相当(truthy)またはfalse相当(falsy)のどちらとして扱われるかという性質。falsyとされる値は0, '', null, undefined, NaN, falseの6種類のみで、それ以外の値(0以外の数値、空でない文字列、オブジェクトなど)はすべてtruthyになる。$.inArray()の戻り値である0が、この6つのfalsy値の1つに該当することが、truthy罠の直接の原因。

3-1. 正しい判定方法

この罠を回避するには、戻り値を直接if文の条件にせず、必ず-1と比較するようにします。

var fruits = ['apple', 'banana', 'orange'];

// 正しい書き方:-1と明示的に比較する
if ($.inArray('apple', fruits) !== -1) {
    console.log('appleが見つかりました'); // ← 正しくこちらが実行される
} else {
    console.log('appleは見つかりませんでした');
}
✔️if ($.inArray(value, arr)) のように戻り値を直接条件式に使わない
✔️必ず!== -1(見つかった)または=== -1(見つからなかった)で比較する
✔️「見つかったかどうか」だけを知りたい場合は、後述するArray.includes()の利用も検討する
代表菅澤 代表菅澤
このバグの厄介なところは、テストデータの配列の並び順によっては表面化しないことです。たまたま検索対象が2番目以降にあるデータでテストしていると気づかず、本番で先頭要素を検索して初めて発覚する、というケースを何度も見てきました。
AI社員AIKATA|月30万円の定額で御社の業務をまるごと巻き取ります(無料相談60分)御社が減らせる固定費は月いくらか|公式LINEで質問に答えるだけ(無料・約1分)

04 型(データ型)まで厳密に比較される仕様 数値の1と文字列の'1'は別物として扱われる

$.inArray()は内部的にネイティブのindexOf()に準じた比較を行っており、値の比較には厳密等価演算子(===)相当のロジックが使われます。つまり、値だけでなくデータ型まで一致していないと「見つかった」と判定されません

var numbers = [1, 2, 3];

console.log($.inArray(1, numbers));   // 0(数値の1が見つかる)
console.log($.inArray('1', numbers)); // -1(文字列の'1'は見つからない)

📚 用語解説

厳密等価演算子(===):JavaScriptにおいて、値だけでなくデータ型も一致しているかを判定する比較演算子。1 === '1'はfalseになる(数値と文字列でデータ型が異なるため)。対して==(等価演算子)は型変換を行ったうえで比較するため1 == '1'はtrueになるが、意図しない挙動を招きやすいため、現在は===の使用が推奨されている。

この仕様は、フォームの入力値やURLパラメータなど、本来は数値であるべきデータが文字列として渡ってくる場面で問題になりがちです。例えば、HTMLのinput要素から取得した値は基本的に文字列型なので、数値の配列に対してそのまま検索をかけると、意図せず「見つからない」判定になってしまいます。

💡 型が不安なときは事前に変換しておく

フォーム入力値など型が不確実なデータを検索する場合は、Number(value)parseInt(value, 10)で明示的に数値へ変換してから$.inArray()に渡すと、型の不一致による見落としを防げます。

05 部分一致検索・複数該当時の挙動 $.inArray()の限界と、それを補う実装方法

5-1. 複数該当時は最初の1つしか分からない

$.inArray()は、条件に合致する最初の1つのインデックスだけを返します。「配列の中に何個一致するものがあるか」「すべての該当箇所を知りたい」という用途には、そのままでは対応できません。

var scores = [80, 60, 80, 90, 80];

console.log($.inArray(80, scores)); // 0(最初に見つかった位置のみ)
// scores配列には80が3つ含まれるが、他の位置(2番目・4番目)は分からない

すべての該当箇所を知りたい場合は、$.each()やArray.prototype.forEach()でループしながら自分で該当インデックスを収集する実装が必要です。

var scores = [80, 60, 80, 90, 80];
var matchedIndexes = [];

$.each(scores, function(index, value) {
    if (value === 80) {
        matchedIndexes.push(index);
    }
});

console.log(matchedIndexes); // [0, 2, 4]

5-2. 部分一致検索を実現する方法

$.inArray()は完全一致のみをサポートしており、「文字列の一部が含まれているかどうか」を調べる部分一致検索には対応していません。部分一致を行いたい場合は、$.grep()Array.prototype.filter()と、文字列のindexOf()includes()を組み合わせます。

var fruits = ['green apple', 'banana', 'red apple', 'orange'];

// $.grep()を使った部分一致検索
var matched = $.grep(fruits, function(item) {
    return item.indexOf('apple') !== -1;
});

console.log(matched); // ['green apple', 'red apple']

📚 用語解説

$.grep():配列の各要素に対してコールバック関数を実行し、条件に合致した要素だけを新しい配列として返すjQueryのユーティリティメソッド。ネイティブJavaScriptのArray.prototype.filter()とほぼ同等の機能を持つ。$.inArray()が「位置(インデックス)」を返すのに対し、$.grep()は「条件に合う要素そのもの」の配列を返す点が異なる。

完全一致1件だけ
知りたい

$.inArray()
完全一致が
何件あるか知りたい

$.each()で
ループ収集
部分一致・条件一致で
絞り込みたい

$.grep() /
Array.filter()
代表菅澤 代表菅澤
「$.inArray()でできないことは何か」を把握しておくと、無理にこのメソッド1つで済ませようとせず、$.grep()や$.each()と正しく使い分けられるようになります。

06 ネイティブJavaScriptとの比較 indexOf・includes・findIndex・someとの使い分け

現在のモダンブラウザでは、jQueryを使わなくても配列を検索する手段がネイティブJavaScriptに複数用意されています。ここで一度、それぞれの違いを整理しておきましょう。

メソッド戻り値主な用途備考
$.inArray(value, arr)インデックス番号 or -1完全一致の位置を知りたいjQuery依存、indexOf相当
Array.prototype.indexOf(value)インデックス番号 or -1完全一致の位置を知りたい$.inArray()とほぼ同じ動作、ネイティブJS
Array.prototype.includes(value)true / false(真偽値)含まれているかだけ知りたいES2016以降、truthy罠が起きない
Array.prototype.findIndex(callback)インデックス番号 or -1オブジェクト配列など複雑な条件で検索したいコールバック関数で柔軟な条件指定が可能
Array.prototype.some(callback)true / false(真偽値)複雑な条件で「存在するか」だけ知りたいfindIndexの真偽値版

📚 用語解説

Array.prototype.includes():ES2016(ECMAScript 2016)で追加されたネイティブJavaScriptの配列メソッド。指定した値が配列に含まれているかどうかを、そのままtrue/falseの真偽値で返す。$.inArray()やindexOf()のようにインデックス番号を返さないため、truthy罠が原理的に発生しない点が実務上の大きなメリット。

「含まれているかどうかだけを知りたい」という用途であれば、$.inArray()よりもArray.prototype.includes()の方が安全で読みやすいコードになります。戻り値が最初から真偽値なので、truthy罠が構造的に起こり得ません。

var fruits = ['apple', 'banana', 'orange'];

// includes()を使えばtruthy罠が起きない
if (fruits.includes('apple')) {
    console.log('appleが見つかりました'); // 正しく実行される
}
代表菅澤 代表菅澤
「$.inArray()を使わないほうがいい」と言われても、既存コードにたくさん書かれていると急に全部を置き換えるのは現実的ではありません。まずはこの比較表を判断基準として手元に置いておくだけでも、次にコードを触るときの迷いが減るはずです。

6-1. オブジェクトの配列を検索したい場合

実務でよくあるのが、「オブジェクトの配列の中から、特定のプロパティが一致する要素を探したい」というケースです。$.inArray()は値そのものの完全一致しか判定できないため、このような場合はArray.prototype.findIndex()が適しています。

var users = [
    { id: 1, name: '田中' },
    { id: 2, name: '佐藤' },
    { id: 3, name: '鈴木' }
];

// $.inArray()ではオブジェクトの中身までは検索できない
console.log($.inArray({ id: 2, name: '佐藤' }, users)); // -1(オブジェクトの参照が異なるため一致しない)

// findIndex()ならコールバックで柔軟に条件指定できる
var index = users.findIndex(function(user) {
    return user.id === 2;
});
console.log(index); // 1
⚠️ オブジェクトの配列に$.inArray()を使うと必ず失敗する

JavaScriptのオブジェクトは、たとえ中身の値が完全に同じでも、生成された時点で異なる参照(メモリ上の実体)として扱われます。$.inArray()は参照の一致で判定するため、「中身は同じだが別のオブジェクト」を渡すと必ず-1が返ります。オブジェクトの配列を検索する場合は、必ずfindIndex()やsome()を使いましょう。

AI鬼管理山崎 AI鬼管理山崎
2026年現在、新規に書くコードであれば、$.inArray()を使う理由はほぼありません。includes()やfindIndex()の方が読みやすく、truthy罠のリスクもない。$.inArray()の知識が本当に必要になるのは、既存のjQueryコードを保守・改修するときです。
AI社員AIKATA|月30万円の定額で御社の業務をまるごと巻き取ります(無料相談60分)御社が減らせる固定費は月いくらか|公式LINEで質問に答えるだけ(無料・約1分)

07 よくある間違い・チェックリスト 実装前に確認しておきたい5つのポイント

✔️if ($.inArray(...))のように戻り値を直接条件式に使っていないか
✔️数値と文字列が混在した配列を検索する際、型変換を忘れていないか
✔️「何件該当するか」を知りたいのに$.inArray()だけで済ませようとしていないか
✔️オブジェクトの配列に対して$.inArray()を使おうとしていないか(findIndex()を使う)
✔️新規開発なのに、既存のjQueryコードをただ真似して$.inArray()を書いていないか

特に最後の1つは見落とされがちです。既存のコードベースにjQueryが使われているからといって、新しく書くコードまで機械的にjQueryのスタイルを踏襲する必要はありません。プロジェクトの方針次第では、新規部分だけネイティブJSの書き方に寄せていく、という判断も十分にあり得ます。

7-1. jQueryを使い続けるべきか、脱却すべきか

2026年現在、多くの企業システムには、過去に構築されたjQuery依存のコードが数多く残っています。すべてを一気にモダンな書き方に置き換えるのは現実的ではなく、「保守するレガシー部分」と「新規に書く部分」を切り分けて判断するのが実務的なアプローチです。

状況推奨される対応
既存のjQueryコードを保守・軽微修正するだけ無理に書き換えず、$.inArray()の仕様を正しく理解した上で保守する
既存コードに大きな機能追加が発生するその機能部分だけネイティブJSの書き方(includes/findIndex)に寄せる
新規プロジェクト・新規モジュールを立ち上げるjQueryに依存せず、ネイティブJSまたはモダンフレームワークで設計する

08 【独自】Claude Codeを使ったjQueryレガシーコードの改修 「動いているが古い」コードと向き合う実務的な方法

$.inArray()のようなjQueryのユーティリティメソッドが大量に使われている古いコードベースは、「動いているから触りたくない」という理由で長年放置されがちです。しかし、保守担当者が変わるたびにtruthy罠のようなクセを知らない人がバグを埋め込んでしまうリスクは、放置すればするほど積み上がっていきます。

ここで実務的に有効なのが、Claude CodeのようなAIコーディングアシスタントに、既存のjQueryコードを見せて「このファイルの$.inArray()の使い方に問題がないか」「ネイティブJSに置き換えるならどう書き換えるべきか」を確認しながら進める方法です。

作業AIへの依頼例
truthy罠の有無を洗い出す「このファイル内で$.inArray()の戻り値をif文で直接判定している箇所を全部洗い出して」
ネイティブJSへの書き換え「この$.inArray()の呼び出しを、Array.includes()を使った書き方に書き換えて」
オブジェクト配列検索の修正「この$.inArray()はオブジェクトの配列を検索しようとして常に-1になっているバグを直して」
影響範囲の確認「この関数を書き換えた場合に、呼び出し元でtruthy判定に依存している箇所がないか確認して」
Step 1
対象ファイルを
AIに読み込ませる
Step 2
危険な書き方
(truthy罠等)を洗い出す
Step 3
1件ずつ安全な
書き方に置き換える
Step 4
動作確認・
テストで検証
💡 一気に全部書き換えようとしない

jQueryのレガシーコードは、往々にして他の処理と密接に絡み合っています。AIに一括で全面書き換えを依頼するのではなく、1ファイル・1関数単位で影響範囲を確認しながら進める方が、事故のリスクを大きく減らせます。

代表菅澤 代表菅澤
レガシーコードの改修は、地味で後回しにされがちな作業です。ただ、AIに「この書き方は危険かどうか」を聞くだけなら数分で終わるので、大きなリファクタリングをしない場合でも、まず現状把握だけでもやっておく価値は大きいと感じています。

09 【独自データ】GENAI社内のレガシーコード改修実例 Claude Max 20xプランでの活用実態

弊社(株式会社GENAI)では、Claude Max 20xプラン(月額$200・約30,000円)を契約し、営業・広告運用・記事制作・経理・秘書業務に加え、既存のWebサイト・LP(ランディングページ)の保守・改修にもClaude Codeを活用しています。

作業内容従来のやり方Claude Code活用後
既存jQueryコードの危険箇所チェックファイルを手作業で1行ずつ確認AIに全ファイルをスキャンさせ、危険な書き方を一覧化
ネイティブJSへの部分置き換え書き換え→目視確認を繰り返すAIが置き換え案を提示→人間が最終確認するフローに短縮
影響範囲の洗い出し該当箇所をエディタの検索機能で探すAIが呼び出し元まで含めて関連箇所を提示
⚠️ 数値の注意書き

削減効果は案件の複雑さやコードの規模によって変動します。あくまで「AIを使ったレガシーコード改修がどのように役立つか」の参考事例としてご覧ください。

AI鬼管理山崎 AI鬼管理山崎
弊社では「AI鬼管理」というサービスで、こうした既存システムの保守・改修にClaude Codeを取り入れる支援も行っています。「古いコードに触るのが怖い」という悩みは、多くの企業に共通する課題だと感じています。
AI社員AIKATA|月30万円の定額で御社の業務をまるごと巻き取ります(無料相談60分)御社が減らせる固定費は月いくらか|公式LINEで質問に答えるだけ(無料・約1分)

10 まとめ $.inArray()の仕様を正しく理解し、適切な選択をする

✔️$.inArray()は配列内の値を検索し、見つかった位置(インデックス)または-1を返す
✔️戻り値0はfalsyなので、if ($.inArray(...))と直接判定すると誤動作する「truthy罠」がある
✔️正しくは!== -1で明示的に比較する
✔️比較はデータ型まで厳密に行われる(数値の1と文字列の'1'は別物)
✔️複数該当・部分一致・オブジェクト検索には$.each() / $.grep() / findIndex()を使う
✔️真偽値だけ知りたいならArray.prototype.includes()の方がtruthy罠が起きず安全
✔️新規開発では$.inArray()を使う理由はほぼなく、ネイティブJSへの移行を検討する価値がある
✔️レガシーコードの改修にはClaude CodeなどのAIを使うと、危険箇所の洗い出しが効率化できる

$.inArray()は一見シンプルなメソッドですが、戻り値の仕様を正しく理解していないと、truthy罠のような分かりにくいバグを生みます。既存のjQueryコードを保守する場合はこの記事で紹介した注意点を、新規開発の場合はネイティブJSへの移行を、それぞれの状況に合わせて判断してください。

弊社では、こうした地味だが重要な技術的判断も含めて、Claude Codeを活用した業務システムの保守・改修を支援しています。「古いコードのメンテナンスに時間を取られている」という方は、ぜひ一度ご相談ください。

既存システムの保守・改修も、AI鬼管理が伴走します

jQueryのようなレガシー資産を抱えるシステムは、多くの企業に共通する悩みです。
AI鬼管理では、Claude Codeを活用した既存コードの解析・改修支援から、社内のAI活用定着まで対応しています。

AI鬼管理山崎 AI鬼管理山崎
「古いコードに手を入れるのが怖い」という状態から抜け出す第一歩は、まず現状を正確に把握することです。無料相談で、貴社のコードの状況をお聞かせください。

ここから先の進め方は、大きく2つあります。

自社で回せるようになりたい方は、AI鬼管理でClaude Code/Codexの使い方から業務設計・社内定着まで伴走を受けながら、社内に仕組みを作る道があります。

覚えるより任せたい方は、AI社員AIKATAでこの記事のような定型業務を丸ごと預ける道があります。料金は月30万円の月額定額、追加費用は0円です。

どちらが合うかは、業務量と社内体制次第です。無料相談・無料適合診断で、貴社の場合はどちらが向くかからご相談いただけます。

NEXT STEP

この記事の内容を、あなたのビジネスで
実践してみませんか?

AI鬼管理 — Claude Code導入支援トレーニング

AI活用を自社で回せるようになりたい方へ

AI鬼管理

Claude Code・Cowork導入支援から業務設計・社内浸透まで実践ベースで伴走。「自社で回せる組織」を90日で作る経営者向けトレーニング。

AI社員AIKATA — 定型業務の丸ごと代行

業務を丸ごと任せたい方へ

AI社員AIKATA

請求処理・データ入力・問い合わせ対応などの定型業務を、AI×人の品質管理体制で丸ごと代行。月30万円の定額でまかせ放題、日々は成果物を承認するだけ。

よくある質問

Q. $.inArray()とArray.prototype.indexOf()は何が違いますか?

A. 基本的な動作はほぼ同じで、どちらも見つかった位置のインデックス番号、見つからなければ-1を返します。$.inArray()は古いブラウザでindexOf()が使えなかった時代に用意されたjQueryの機能で、現在のモダンブラウザではindexOf()と実質的に同等の動作をします。

Q. なぜ$.inArray()の戻り値0をif文で判定するとバグになるのですか?

A. JavaScriptでは数値の0はfalsy(偽として扱われる値)だからです。$.inArray()は配列の先頭(0番目)で一致した場合に0を返しますが、if文にそのまま渡すと0がfalseと判定され、「見つからなかった」分岐が誤って実行されてしまいます。必ず`!== -1`で比較してください。

Q. $.inArray()でオブジェクトの配列を検索できますか?

A. できません。JavaScriptのオブジェクトは中身が同じでも参照(実体)が異なれば別物として扱われるため、$.inArray()で一致判定できません。オブジェクトの配列からプロパティの値で検索したい場合は、Array.prototype.findIndex()にコールバック関数を渡す方法を使ってください。

Q. 含まれているかどうかだけ知りたい場合、何を使うのが良いですか?

A. Array.prototype.includes()がおすすめです。戻り値が最初から真偽値(true/false)なので、$.inArray()のようなtruthy罠が構造的に発生しません。ES2016以降のモダンブラウザであれば問題なく使用できます。

Q. 新規プロジェクトでも$.inArray()を使うべきですか?

A. 基本的には推奨しません。新規開発であれば、truthy罠のリスクがなく可読性も高いArray.prototype.includes()や、柔軟な条件指定ができるfindIndex()を使う方が安全です。$.inArray()の知識が必要になるのは、主に既存のjQueryコードを保守する場面です。

Q. 古いjQueryコードを書き換える際に気をつけることは何ですか?

A. 一度に全体を書き換えようとせず、1ファイル・1関数単位で影響範囲を確認しながら進めることが重要です。特にtruthy罠に依存した分岐が他の処理と絡み合っているケースがあるため、書き換え後は必ず動作確認を行ってください。AIコーディングアシスタントを使うと、危険箇所の洗い出しを効率化できます。

AIAI鬼管理

AI鬼管理/AI社員AIKATAへのお問い合わせ

この記事を読んで気になった方へ。
専門スタッフが、御社に最適な
業務自動化・業務代行プランを無料でご提案します。

サービスを選択してください

会社名を入力してください
業種を選択してください
お名前を入力してください
※法人・事業用のメールアドレスでお願いします(Gmail等の個人用フリーメールは受付できません)
正しいメールアドレスを入力してください

1つ以上選択してください
1つ以上選択してください
月額コストを選択してください

約1時間のオンライン面談(Google Meet)です

空き枠を取得中...
面談日時を選択してください

予約確定後、Google Calendarの招待メールをお届けします。
しつこい営業は一切ございません。

監修 最終更新日: 2026年9月11日
菅澤孝平
菅澤 孝平 株式会社GENAI 代表取締役
  • AI業務自動化サービス「AI鬼管理」を運営 — Claude Code を活用し、経営者の業務を「AIエージェントに任せる仕組み」へ転換するパーソナルトレーニングを 伴走構築 で提供。日報・採用・問い合わせ対応・経費精算・議事録・データ集計・営業リスト等の定型業務を、AIに代行させる体制を経営者と一緒に作り込む
  • Claude Code 実装ノウハウを 経営者・法人クライアント に直接指導。生成AIを「便利ツール」ではなく 「業務を任せる存在」 として運用する手法を体系化
  • 「やらせ切る管理」メソッドの開発者。シンゲキ株式会社(2021年設立・鬼管理専門塾運営)にて累計3,000名以上の学習者を志望校合格に導いた管理メソッドを、AI × 経営者支援 に転用
  • 著書『3カ月で志望大学に合格できる鬼管理』(幻冬舎)、『親の過干渉こそ、最強の大学受験対策である。』(講談社)
  • メディア出演: REAL VALUE / カンニング竹山のイチバン研究所 / ええじゃないかBiz 他
  • 明治大学政治経済学部卒
現在は AI鬼管理(Claude Code活用の伴走型パーソナルトレーニング)を主事業とし、経営者と二人三脚で「AIに業務を任せる仕組み」を実装。「実行を強制する環境」を AI で構築する手法を、自社の実運用知見をもとに発信している。