[解決済み] Array.isArrayとinstanceof Arrayの使い分けについて
疑問点
配列が配列であるかオブジェクトであるかを判断する方法は2つあります。使用方法
typeof item === "object";
を使用すると、オブジェクトと配列に対して真を返します。配列はjavascriptでは比較的新しいもので、配列はオブジェクトのプロトタイプだからです(この表現は間違っているかもしれませんので、遠慮なく訂正してください)。したがって、私が知っている配列が配列であるかどうかを判断する方法は2つあります。
解決策 1:
Array.isArray(item);
解決策2
item instanceof Array;
私の質問です。
- これら 2 つのソリューションの違いは何ですか。
- この 2 つのうち、どちらが望ましい解決策ですか?
- どちらが処理時間が早いですか?
どのように解決するのですか?
<ブロッククオート1.この2つのソリューションの違いは何ですか?
isArray はES5メソッドなので古いブラウザではサポートされていませんが、オブジェクトがArrayかどうかを確実に判断します。
インスタンスオブ
は
Array.prototype
がオブジェクトの
[[Prototype]]
チェーンにあります。フレームをまたぐ配列のチェックでは
配列
のコンストラクタがテスト用と異なる可能性があるためです。
2.どちらが望ましい解決策でしょうか?
"Preferred"は、何らかの選択基準を想定しています。一般に、好ましい方法は次のようなものです。
if (Object.prototype.toString.call(obj) == '[object Array]')
これはES3ブラウザに適しており、フレームを越えて動作します。ES5ブラウザのみを考慮した場合。 isArray はおそらくOKでしょう。
3.処理時間が早いのはどちらですか?
どちらも処理時間は無視できるほど短いので、ほとんど関係ありません。それよりも、信頼性の高い方を選択する方がはるかに重要です。また Array.isArray メソッドを使用して、それが組み込まれていないブラウザーに追加することができます。
if (!Array.isArray) {
Array.isArray = function(obj) {
return Object.prototype.toString.call(obj) == '[object Array]';
}
}
関連
-
[解決済み] let "と "var "の使い分けは?
-
[解決済み] 配列からArrayListを作成する
-
[解決済み] callとapplyの違いは何ですか?
-
[解決済み] Javaで配列を宣言し、初期化する方法は?
-
[解決済み] 配列の反復処理に "for...in "を使用するのは、なぜ良くないのでしょうか?
-
[解決済み] JavaScriptのオブジェクトの配列からidでオブジェクトを検索する
-
[解決済み] Bowerとnpmの違いは何ですか?
-
[解決済み] JavaScriptのnullとundefinedの違いは何ですか?
-
[解決済み] JavaScriptの配列宣言で「Array()」と「[]」はどう違うのですか?
-
[解決済み] JSHintの'+'前の改行不良の説明
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】JavaScriptの比較では、どちらの等号演算子(== vs ===)を使うべきですか?
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] JavaScript で範囲を作成する - 奇妙な構文
-
[解決済み] reactのrender関数でdynamic hrefを作成するには?
-
[解決済み] JSXとLoadshを使用して、ある要素をn回繰り返す方法
-
[解決済み] 無効になっている入力フィールドの値を送信する
-
[解決済み] BlobからArrayBufferへ移行する方法
-
[解決済み] AJAX Mailchimp サインアップフォームの統合
-
[解決済み] モデルフェッチ時に1をtrueに、0をfalseに変換する方法
-
[解決済み] リダイレクトされずにHTMLフォームを送信する方法