[解決済み] JavaScript: 引数がオブジェクトでなく配列であることを検出する(Node.JS)
2023-03-29 10:35:54
質問
引数が配列である場合、どのように検出すればよいのでしょうか。
typeof []
は
'object'
で、配列とオブジェクトを区別したい。
オブジェクトが以下のようになる可能性があります。
{"0":"string","1":"string","length":"2"}
のように見える可能性がありますが、実際には配列のように見えるオブジェクトである場合、配列として出てきて欲しくありません。
JSON.parse
と
JSON.stringify
はこの区別をすることができます。どうすればいいのでしょうか?
Chromeと同じV8ベースのNode.JSを使っています。
どのように解決すればよいですか?
-
Array.isArray
V8のネイティブ関数です。高速で、常に正しい。これはES5の一部です。
-
arr instanceof Array
オブジェクトが配列コンストラクタで作成されたかどうかをチェックします。
underscoreのメソッドです。以下は、そのソースから引用したスニペットです。
var toString = Object.prototype.toString,
nativeIsArray = Array.isArray;
_.isArray = nativeIsArray || function(obj) {
return toString.call(obj) === '[object Array]';
};
このメソッドはオブジェクトを受け取り
Object.prototype.toString
メソッドを呼び出します。これは常に
[object Array]
を返します。
私の個人的な経験では
toString
メソッドを使うのが最も効果的ですが、これは
instanceof Array
のような速さはありません。
Array.isArray
のように高速ではありませんが、これはES5のコードであり、私は移植性のためにそれを使用しない傾向があります。
個人的には
underscore
これは一般的なユーティリティメソッドを含むライブラリです。コードをDRYアップしてくれる便利な関数がたくさんあります。
関連
-
[解決済み] JavaScriptでオブジェクトをディープクローンする最も効率的な方法は何ですか?
-
[解決済み] JavaScript で配列に値が含まれているかどうかを確認するにはどうすればよいですか?
-
[解決済み] JavaScriptのオブジェクトが空であることをテストするにはどうすればよいですか?
-
[解決済み] 配列に特定のインデックスで項目を挿入する方法 (JavaScript)
-
[解決済み] JavaScriptのオブジェクトにキーが存在するかどうかをチェックする?
-
[解決済み] HTML5のlocalStorageにオブジェクトを格納する方法は?
-
[解決済み] Node.jsを使うタイミングをどう判断するか?
-
[解決済み] javascriptで2つの数値を連結する方法は?
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] 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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] Javascriptによるタッチスクリーンデバイスの検出
-
[解決済み] チェックボックスが選択されているかどうかを確認するjQuery
-
[解決済み] 文字列のn番目の出現箇所を取得するには?
-
[解決済み] アサインの左側にJavascriptのオブジェクトブラケット表記({ ナビゲーション } =)があります。
-
[解決済み] Javascriptで動的に命名されたメソッドを呼び出すにはどうすればよいですか?
-
[解決済み] イテレータでmap()を使用する
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] javascriptのキャンバスで画像をリサイズする (スムーズ)