検索

JavaScript では、配列のようなオブジェクトとも呼ばれる擬似配列は、インデックスに従ってデータを格納し、長さ属性を持つ配列のようなオブジェクトです。オブジェクトであるため、擬似-array には、array.()、forEach() およびその他のメソッドのプッシュはありません。

JavaScriptの擬似配列とは何ですか

このチュートリアルの動作環境: Windows7 システム、JavaScript バージョン 1.8.5、Dell G3 コンピューター。

擬似配列の定義と特徴

擬似配列 (ArrayLike)、配列状とも呼ばれます。インデックスに従ってデータを格納し、長さプロパティを持つ配列のようなオブジェクトです。 しかし、次のような特徴があります。

  • #インデックスによるデータの保存

    0: xxx、1: xxx、2: xxx...

  • length 属性があります

    ただし、

    length 属性は動的ではないため、メンバーが変化しても変化しません

  • 配列を使用しない、push() や forEach() などのメソッド
  • arrayLike.__proto__ === Object.prototype;   //true 
    arrayLike instanceof Object; //true 
    arrayLike instanceof Array; //false

  • jQuery の $() を通じて取得される DOM 要素のセットを含む、一般的な典型的な疑似配列、関数引数オブジェクトと String オブジェクト。

例:

    var arrLike = {
        0: 'a',
        1: 'b',
        2: 'c',
        length: 3,
    }
    arrLike[1]; //'a'
    arrLike.length; //3
    arrLike.push('d'); //Uncaught TypeError: arrLike.push is not a function

疑似配列を実際の配列に変換する方法

    var arrLike = {
        0: 'a',
        1: 'b',
        2: 'c',
        length: 3,
    };

1. 空の配列をトラバースして追加します

    var arr = [];
    for(var i = 0; i < arrLike.length; i++){
        arr.push(arrLike[i]);
    }
比較的シンプルでわかりやすいですが、手順が少し面倒です。

2. 配列のスライス() メソッドを使用する [推奨]

    ;[].slice.call(arrLike);
または

    Array.prototype.slice.apply(arrLike);

新しい配列を返すには、slice() を使用します。 call() または apply() は、そのスコープを疑似配列に指します。

インデックス値以外の追加の属性は、返された配列には保持されないことに注意してください。

たとえば、jQuery の $() で取得した DOM 擬似配列の context 属性は、このメソッドで変換すると保持されません。

slice() の内部実装をシミュレートする

    Array.prtotype.slice = function(start, end){
        var result = new Array();
        var start = start | 0;
        var end = end | this.length;
        for(var i = start; i < end; i++){
            result.push(this[i]);
        }
        return result;
    }

3. プロトタイプ ポインターを変更する

    arrLike.__proto__ = Array.prototype;
このようにして、arrLike は Array のメソッドを継承します。 .prototype では、push()、unshift() などのメソッドを使用でき、長さの値も動的に変更されます。

さらに、プロトタイプ チェーンを直接変更するこの方法では、インデックス値ではない属性を含むすべての属性も擬似配列に保持されます。

4. ES2015 の Array.from() メソッド

Array.from() メソッドは、配列のようなオブジェクトまたは反復可能なオブジェクトから新しい配列インスタンスを作成します。 。

    var arr = Array.from(arrLike);

得られる結果は 2 番目の方法と似ており、インデックス値内の属性のみが保持されます。

[推奨学習:

JavaScript 上級チュートリアル

]

以上がJavaScriptの擬似配列とは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
useState()vs。usereducer():州のニーズに合った適切なフックを選択するuseState()vs。usereducer():州のニーズに合った適切なフックを選択するApr 24, 2025 pm 05:13 PM

ChooseuseState()forsimple,independentstatevariables;useuseReducer()forcomplexstatelogicorwhenstatedependsonpreviousstate.1)useState()isidealforsimpleupdatesliketogglingabooleanorupdatingacounter.2)useReducer()isbetterformanagingmultiplesub-valuesorac

UseState()を使用して状態を管理する:実用的なチュートリアルUseState()を使用して状態を管理する:実用的なチュートリアルApr 24, 2025 pm 05:05 PM

UseStateは、州の管理を簡素化し、コードをより明確にし、読みやすくし、Reactの宣言的な性質と一致するため、クラスコンポーネントやその他の州管理ソリューションよりも優れています。 1)UseStateを使用すると、状態変数を関数コンポーネントに直接宣言することができます。2)フックメカニズムの再レンダリング中に状態を覚えています。

UseState()を使用する時期と、代替の州管理ソリューションを検討するタイミングUseState()を使用する時期と、代替の州管理ソリューションを検討するタイミングApr 24, 2025 pm 04:49 PM

useUsestate()forlocalcomponentStatemanagement; compleartinative forglogic、orperformanceissues.1)useidealforsimple、localstate.2)useglobalStateSolutionSolutionSuxorContextForSharedState.3)OptForreDuxtormobxobxobxobforexSt

Reactの再利用可能なコンポーネント:コードの維持可能性と効率の向上Reactの再利用可能なコンポーネント:コードの維持可能性と効率の向上Apr 24, 2025 pm 04:45 PM

再利用することは、codecodemaintainabilityを抑制することを再生します

Virtual Dom in React:効率的な更新によるパフォーマンスの向上Virtual Dom in React:効率的な更新によるパフォーマンスの向上Apr 24, 2025 pm 04:41 PM

virtualdomisalightweightin-memorycopyofthedomused byRealctuttooptimizeuiupdates.itboostsperformanceByminimizingddomizeddomizedirectdomizedirectdomizedirectdomizedirculation fupdatingthatingdatingdatualdomfirst、その後、applyingonlynlynalychangestotualdom。

HTMLとReactの統合:実用的なガイドHTMLとReactの統合:実用的なガイドApr 21, 2025 am 12:16 AM

HTMLとReactは、JSXを介してシームレスに統合して、効率的なユーザーインターフェイスを構築できます。 1)JSXを使用してHTML要素を埋め込み、2)仮想DOMを使用してレンダリングパフォーマンスを最適化し、3)コンポーネントを通じてHTML構造を管理およびレンダリングします。この統合方法は直感的であるだけでなく、アプリケーションのパフォーマンスを向上させます。

ReactおよびHTML:レンダリングデータと取り扱いイベントReactおよびHTML:レンダリングデータと取り扱いイベントApr 20, 2025 am 12:21 AM

React Reactは、状態および小道具を介してデータを効率的にレンダリングし、合成イベントシステムを介してユーザーイベントを処理します。 1)Counterの例など、UseStateを使用して状態を管理します。 2)イベント処理は、ボタンクリックなどのJSXに関数を追加することにより実装されます。 3)トドリストコンポーネントなどのリストをレンダリングするには、重要な属性が必要です。 4)フォーム処理の場合、FormコンポーネントなどのuseStateおよびe.preventdefault()。

バックエンド接続:Reactがサーバーとどのように相互作用するかバックエンド接続:Reactがサーバーとどのように相互作用するかApr 20, 2025 am 12:19 AM

Reactは、HTTP要求を介してサーバーと対話し、データを取得、送信、更新、削除します。 1)ユーザー操作はイベントをトリガーします。2)HTTP要求を開始する、3)サーバーの応答をプロセス、4)コンポーネントのステータスと再レンダリングを更新します。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

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

ホットツール

EditPlus 中国語クラック版

EditPlus 中国語クラック版

サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。