WeChat アプレット プロジェクトを書いていたとき、その中に「都市選択」機能がありました。作者は 当時はJS変数の型変換を理解していなかったので、コードに数行の判断を書きました。(これは厳密です) val_one=typeof this.data.pIndex=="number"?[this.daya.pIndex]:this.data.pIndex とします。 (: プロジェクト内のアクセス要素は動的です! 上記の理由は、下付き文字がユーザーの選択に動的に従い、表示のために wxml の しかし、その前に判断を下す必要があります。一部の地域は省の都市または直轄市であるため、突然引き上げたり引き抜いたりするなどの「愚かな操作」をユーザーが行うことを防ぐ必要があります。このとき、WeChatアプレットは対応するデータが見つからないというエラーを報告します。 length = placeArray[val_one].sub.lengthとします。 if(val[0]>=長さ){ val=[長さ-1] }それ以外の場合(val[0]<0){ 値=[0] } 後で、このプロジェクトのコードを最適化するために戻ったとき、これ (強制時に配列を数値に変換し、フィードバックを与えるときに数値を配列に変換すること) は実際には不要であることがわかりました。 JavaScript には独自のデータ処理方法があるようですが、著者はまだ関連する情報を見つけていません~~ 値が配列の添え字(インデックス)として使用できるかどうかを判断する方法 しかし、確かなことが 1 つあります。整数プロパティ キーに値を割り当てることは、非整数キーとは異なる方法で処理されるため、配列の特殊なケースであるということです。プロパティを配列インデックスとして使用できるかどうかを判断するために、著者は ES6 仕様書で次の一節を見つけました。
この操作は、次のように JS を使用して実装できます。 関数 toUint32(値){ Math.floor(Math.abs(Number(value))) % Math.pow(2,32) を返します。 } 関数isArrayIndex(キー){ numericKey = toUint32(キー)とします。 String(numericKey) == key && numericKey < (Math.pow(2,32)-1) を返します。 }
この基礎があれば、これに基づいて 関数createArray(長さ=0){ 新しいProxy({ length },{ を返す set(トラップターゲット、キー、値){ currentLength=Reflect.get(trapTarget,"length"); とします。 if(isArrayIndex(キー)){ numericKey = Number(key); とします。 if(数値キー >= 現在の長さ){ Reflect.set(トラップターゲット、"長さ"、数値キー+1); } }else if(key === "長さ"){ if(値 < 現在の長さ){ for(let index=現在の長さ-1;index>=値;index--){ Reflect.deleteProperty(トラップターゲット、インデックス); } } } // キーのタイプに関係なく、このコードを実行する必要があります return Reflect.set(trapTarget,key,value); } }); } これを試してみましょう: 要約する JS 配列インデックス検出におけるデータ型の問題の詳細な説明については、これで終わりです。JS 配列インデックス検出におけるデータ型の詳細については、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。 以下もご興味があるかもしれません:
|
<<: 11 の素晴らしい JavaScript コード リファクタリングのベスト プラクティスの概要
>>: WeChatミニプログラム抽選コンポーネントの使い方
var() の紹介と使用法詳細 (MDN) IEは無効ですが、他の主流のブラウザは有効ですvar()...
1. スクリプトを動的に読み込むウェブサイトの需要が高まるにつれて、スクリプトの需要も徐々に増加しま...
国慶節の休暇後、Windows アップデート後に VMware 仮想マシンが開けなくなり、「VMwa...
数日前、Google Reader で Yu Bo さんが共有した投稿「空のパスがページのパフォーマ...
1. /etc ディレクトリ内の、文字以外の文字で始まり、その後に文字と任意の長さのその他の文字が続...
序文私自身の個人ブログを入力しているときに、ブログの詳細ページでさまざまなコンテンツをコピーするさま...
目次1.画像レイヤーの数を減らす1. 命令の統合2. 多段階ビルド3. スクワッシュ機能を有効にする...
html 、アドレス、引用、本文、 dd 、 div 、 dl 、 dt 、フィールドセット、フォ...
目次1. grub.cfg ファイルの紹介1. grub.cfg ファイルの場所2. grub.cf...
この記事では、VueでEchartsをインポートして線散布図を実現する具体的なコードを参考までに共有...
この記事の例では、右上隅の時間表示のリアルタイム更新を実現するためのVueの具体的なコードを紹介しま...
目次必要とする実装コードデータベース数日前、友人からこれを書くのを手伝ってほしいと頼まれました。ただ...
MySQL パーティションテーブルの概要数億、あるいは数十億ものレコードを格納するテーブルに遭遇する...
1. Windows 版の Docker をインストールしたら、Docker クイックスタート ター...
MySQL のインストールは、インストール バージョンと解凍バージョンに分かれています。インストール...