[解決済み】オブジェクトが配列にあるかどうかを判断する方法
2022-04-05 03:33:50
質問
javascriptで配列にオブジェクトがすでに存在するかどうかを判断する必要があります。
例えば(ダミーコード)。
var carBrands = [];
var car1 = {name:'ford'};
var car2 = {name:'lexus'};
var car3 = {name:'maserati'};
var car4 = {name:'ford'};
carBrands.push(car1);
carBrands.push(car2);
carBrands.push(car3);
carBrands.push(car4);
これで、配列 "carBrands" にはすべてのインスタンスが含まれるようになりました。 そこで、car1、car2、car3、car4 のインスタンスがすでに carBrands 配列にあるかどうかをチェックするための高速なソリューションを探しています。
例えば
var contains = carBrands.Contains(car1); //<--- returns bool.
car1 と car4 は同じデータを含んでいますが、異なるインスタンスであるため、等しくないものとしてテストする必要があります。
作成時にオブジェクトにハッシュのようなものを追加する必要があるのでしょうか?それとも、Javascriptでこれを行うより速い方法があるのでしょうか?
私はここで最速の解決策を探しています。) 私のアプリでは、約1000000のインスタンスを処理する必要があります。
jqueryなし
解決するには?
このようなものを使ってください。
function containsObject(obj, list) {
var i;
for (i = 0; i < list.length; i++) {
if (list[i] === obj) {
return true;
}
}
return false;
}
この場合
containsObject(car4, carBrands)
が真です。 を削除します。
carBrands.push(car4);
を呼び出すと、代わりにfalseが返されます。 もし後で、配列の代わりにオブジェクトを使用して他の車オブジェクトを格納するように拡張する場合は、代わりにこのようなものを使用することができます。
function containsObject(obj, list) {
var x;
for (x in list) {
if (list.hasOwnProperty(x) && list[x] === obj) {
return true;
}
}
return false;
}
この方法は配列に対しても有効ですが、配列に対して使用した場合、最初のオプションよりも若干遅くなります。
関連
-
[解決済み] jQueryで、ユーザーがそのフィールドを編集している間、テキストフィールドの最初の文字を大文字にするにはどうすればよいですか?
-
[解決済み】FirefoxでGoogle Maps V3をリモートで使用すると「googleが定義されていません」と表示される。
-
[解決済み】Uncaught TypeError: 未定義のプロパティ 'msie' を読み取れない - jQuery tools
-
[解決済み] 配列から特定の項目を削除するにはどうすればよいですか?
-
[解決済み] jQueryで要素が非表示になっているかどうかを確認するには?
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み】別のウェブページにリダイレクトするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】Uncaught TypeError: nullのプロパティ'value'を読み取ることができない
-
[解決済み] テスト
-
[解決済み】React.jsの配列の子要素のユニークキーを理解する
-
[解決済み】XMLパースエラー:ルート要素が見つからない コンソールの場所 FF
-
[解決済み】Kendo Observable Bindingと併用する場合、Kendo Switch Labelsを変更することは可能ですか?[Kendo-UI]です。
-
[解決済み】Jestが予期しないトークンに遭遇した
-
[解決済み】ES6マップオブジェクトをソートすることは可能ですか?
-
[解決済み】Vueが定義されていない
-
[解決済み】Javascript、[オブジェクトHTMLInputElement]を表示中。]
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?