es6 で変数が配列であるかどうかを判断する方法
es6 では、Array の isArray() メソッドを使用して、変数が配列であるかどうかを判断できます。このメソッドは、オブジェクトが配列型であるかどうかを判断するために使用されます。構文は「Array.isArray(obj)」です。 "; オブジェクトが配列の場合は true を返し、それ以外の場合は false を返します。
このチュートリアルの動作環境: Windows 7 システム、ECMAScript バージョン 6、Dell G3 コンピューター。
ES5 で変数が配列であるかどうかを判断する
ES5 では、値が配列であるかどうかを判断する方法が少なくとも次の 5 つあります。配列:
var a = []; // 1.基于instanceof a instanceof Array; // 2.基于constructor a.constructor === Array; // 3.基于Object.prototype.isPrototypeOf Array.prototype.isPrototypeOf(a); // 4.基于getPrototypeOf Object.getPrototypeOf(a) === Array.prototype; // 5.基于Object.prototype.toString Object.prototype.toString.apply(a) === '[object Array]';
上記の Object.prototype.toString
を除いて、他のメソッドは変数の型を正しく決定できません。
コードの実行環境は非常に複雑であり、変数は作成者を混乱させるためにあらゆる種類のトリックを使用する可能性があることを知っておく必要があります。上記の
var a = { __proto__: Array.prototype }; // 分别在控制台试运行以下代码 // 1.基于instanceof a instanceof Array; // => true // 2.基于constructor a.constructor === Array; // => true // 3.基于Object.prototype.isPrototypeOf Array.prototype.isPrototypeOf(a); // => true // 4.基于getPrototypeOf Object.getPrototypeOf(a) === Array.prototype; // => true
を見ると、4 つのメソッドはすべて true を返します。オブジェクトの __proto__ 属性を Array.prototype として手動で指定しただけで、そのオブジェクトは Array オブジェクトを継承することになりましたが、この無責任な継承方法により、継承による判断体系は一瞬にして崩壊してしまいました。
それだけでなく、Array はヒープ データであり、変数はその参照アドレスのみを指しているため、各ページの Array オブジェクトによって参照されるアドレスが異なることもわかります。 iframe で宣言された配列の場合、そのコンストラクターは iframe 内の Array オブジェクトです。配列 x が iframe で宣言され、親ページの変数 y に割り当てられている場合、y 配列のインスタンスが親ページで使用され、結果は false になる必要があります。最後のものは文字列を返すため、参照の問題はありません。実際、複数のページまたはシステム間の対話は文字列でのみ可能です。
ES6 で変数が配列であるかどうかを判断する
配列の一般的な使用を考慮して、Array.isArray メソッドが ES6 に追加されています。 ES6 では、このメソッドを使用して、次のように、変数が配列であるかどうかを判断するのが非常に簡単です:
Array.isArray([]); // => true Array.isArray({0: 'a', length: 1}); // => false
実際、 を通じて値の型を判断するのは、主要な主流ライブラリの標準でもあります。 Object.prototype.toString
。したがって、Array.isArray のポリフィルは通常次のようになります:
if (!Array.isArray){ Array.isArray = function(arg){ return Object.prototype.toString.call(arg) === '[object Array]'; }; }
[関連する推奨事項: JavaScript ビデオ チュートリアル 、Web フロントエンド ]
以上がes6 で変数が配列であるかどうかを判断する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











foreach ループを使用して PHP 配列から重複要素を削除する方法は次のとおりです。配列を走査し、要素がすでに存在し、現在の位置が最初に出現しない場合は、要素を削除します。たとえば、データベース クエリの結果に重複レコードがある場合、このメソッドを使用してそれらを削除し、重複レコードのない結果を取得できます。

PHP の配列キー値の反転メソッドのパフォーマンスを比較すると、array_flip() 関数は、大規模な配列 (100 万要素以上) では for ループよりもパフォーマンスが良く、所要時間が短いことがわかります。キー値を手動で反転する for ループ方式は、比較的長い時間がかかります。

多次元配列のソートは、単一列のソートとネストされたソートに分類できます。単一列のソートでは、array_multisort() 関数を使用して列ごとにソートできますが、ネストされたソートでは、配列を走査してソートするための再帰関数が必要です。具体的な例としては、製品名による並べ替えや、売上数量や価格による化合物の並べ替えなどがあります。

PHP で配列をディープ コピーする方法には、json_decode と json_encode を使用した JSON エンコードとデコードが含まれます。 array_map と clone を使用して、キーと値のディープ コピーを作成します。シリアル化と逆シリアル化には、serialize と unserialize を使用します。

PHP で配列のディープ コピーを実行するためのベスト プラクティスは、 json_decode(json_encode($arr)) を使用して配列を JSON 文字列に変換し、それから配列に戻すことです。 unserialize(serialize($arr)) を使用して配列を文字列にシリアル化し、それを新しい配列に逆シリアル化します。 RecursiveIteratorIterator を使用して、多次元配列を再帰的に走査します。

PHP の array_group_by 関数は、キーまたはクロージャ関数に基づいて配列内の要素をグループ化し、キーがグループ名、値がグループに属する要素の配列である連想配列を返すことができます。

PHP の array_group() 関数を使用すると、指定したキーで配列をグループ化し、重複する要素を見つけることができます。この関数は次の手順で動作します。 key_callback を使用してグループ化キーを指定します。必要に応じて、value_callback を使用してグループ化値を決定します。グループ化された要素をカウントし、重複を特定します。したがって、array_group() 関数は、重複する要素を見つけて処理するのに非常に役立ちます。

PHP 配列のマージおよび重複排除アルゴリズムは、元の配列を小さなブロックに分割して並列処理する並列ソリューションを提供し、メイン プロセスは重複排除するブロックの結果をマージします。アルゴリズムのステップ: 元の配列を均等に割り当てられた小さなブロックに分割します。重複排除のために各ブロックを並行して処理します。ブロックの結果をマージし、再度重複排除します。
