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衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

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

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

ホットトピック









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

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

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

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

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 は、Web サイト開発およびデータ処理分野で広く使用されている、一般的に使用されるサーバー側スクリプト言語です。 PHP では、配列内の値をサイズで並べ替えるのは非常に一般的な要件です。組み込みのソート関数を使用すると、配列を簡単にソートできます。以下では、PHP を使用して配列内の値をサイズで並べ替える方法を、具体的なコード例とともに紹介します。 1. 配列内の値を昇順に並べ替えます。
