初心者が JavaScript で配列をより上手に使用するにはどうすればよいでしょうか? (ソースコード)
この記事の内容は、初心者が JavaScript で配列をより効果的に使用する方法についてです。 (ソースコード)、それは確かな参考値を持っています、それがあなたに役立つことを願っています。
Array.filter の代わりに Array.find を使用する
Array.filter は非常に便利なメソッドです。コールバック関数を通じて元の配列をフィルタリングし、フィルタリングされた項目を新しい配列として返します。その名前が示すように、このメソッドはフィルタリングに使用され、(一般的に言えば) より短い長さの新しい配列が生成されます。
ただし、コールバック関数でフィルタリングすると項目だけが残ることがわかっている場合は、Array.filter の使用はお勧めしません。例: 配列をフィルタリングするには、フィルタ条件として一意の ID に等しいを使用します。この例では、Array.filter は項目を 1 つだけ含む新しい配列を返します。ただし、特定の ID を持つ項目を取得しようとしているだけなので、この新しい配列は役に立ちません。
パフォーマンスについて話しましょう。コールバック関数のフィルター基準に一致するすべての項目を取得するには、Array.filter が配列全体を走査する必要があります。元の配列に数千の項目がある場合、コールバック関数をかなりの回数実行する必要があります。
これらの状況を回避するには、Array.find を使用することをお勧めします。 Array.filter と同様にコールバック関数が必要ですが、条件を満たす最初の項目のみを返します。コールバック関数のフィルター条件を満たす最初の要素が見つかると、下方向の検索が直ちに停止されます。配列全体を反復処理する必要はもうありません。
'use strict'; const characters =[ { id:1, name:'ironman'}, { id:2, name:'black_widow'}, { id:3, name:'captain_america'}, { id:4, name:'captain_america'}, ]; function getCharacter(name){ return character => character.name === name; } console.log(characters.filter(getCharacter('captain_america'))); // [ // { id: 3, name: 'captain_america' }, // { id: 4, name: 'captain_america' }, // ] console.log(characters.find(getCharacter('captain_america'))); // { id: 3, name: 'captain_america' }
Array.find の代わりに Array.some を使用します
私もこの間違いをよく犯すことを認めます。そこで友人が、より良い方法を見つけるために MDN のドキュメントを調べてみたらどうかと提案してくれました。実際、(このエラーは) 上記の Array.indexOf/Array.includes の例と非常に似ています。
上記の例では、Array.find がパラメーターとしてコールバック関数を必要とし、(修飾された) 最初の要素を返すことがわかります。しかし、要素が配列内に存在するかどうかを知る必要がある場合、Array.find が最良の選択でしょうか?ブール値ではなく要素を返すため、必ずしもそうではありません。
以下の例では、必要なブール値を返す Array.some を使用することをお勧めします。
'use strict'; const characters =[ { id:1, name:'ironman', env:'marvel'}, { id:2, name:'black_widow', env:'marvel'}, { id:3, name:'wonder_woman', env:'dc_comics'}, ]; function hasCharacterFrom(env){ return character => character.env === env; } console.log(characters.find(hasCharacterFrom('marvel'))); // { id: 1, name: 'ironman', env: 'marvel' } console.log(characters.some(hasCharacterFrom('marvel'))); // true
Array.some と Array.includes の使用の違いを追加します。どちらも配列内に項目が存在するかどうかを示すブール値を返し、対応する項目が見つかると配列の走査を停止します。違いは、Array.some のパラメータがコールバック関数であるのに対し、Array.includes のパラメータは値であることです (2 番目のオプションのパラメータは考慮されません)。
値を持つ項目が配列内に存在するかどうかを知りたいとします。コード [].includes(value) を記述するか、 item => item === value を配列に渡すことができます。 .some をコールバック関数として使用します。 Array.includes は使いやすく、Array.some はより制御しやすいです。
Array.filter と Array.map を組み合わせる代わりに Array.reduce を使用する
実際、Array.reduce は理解するのが簡単ではありません。ただし、最初に Array.filter を使用して元の配列をフィルターし、次に (結果に対して) Array.map を呼び出した場合 (新しい配列を取得するため)。これには何か問題があると思われますか?
これの問題は、配列を 2 回走査していることです。 1 回目は、元の配列をフィルターして、少し短い長さの新しい配列を取得します。2 回目のトラバーサル (翻訳者注: Array.map) は、Array.filter によって返された新しい配列を処理し、新しい配列を再度作成します。最終結果を得るために、2 つの配列メソッドを組み合わせて使用しました。各メソッドには独自のコールバック関数があり、Array.map で使用される一時配列は Array.filter によって提供されますが、これは (一般的に) 再利用できません。
このような非効率的なシナリオを回避するには、Array.reduce を使用することをお勧めします。結果は同じですが、コードは改善されています。 Array.reduce を使用すると、フィルタリングおよび削減された項目をアキュムレータに入れることができます。アキュムレータには、インクリメントされる数値、塗りつぶされるオブジェクト、結合される文字列または配列などを指定できます。
上記の例では Array.map を使用しましたが、(さらに) アキュムレータが結合される配列である Array.reduce を使用することをお勧めします。次の例では、変数 env の値に応じて、それをアキュムレータに追加するか、アキュムレータを変更しないままにします (つまり、何もしません)。
'use strict'; const characters =[ { name:'ironman', env:'marvel'}, { name:'black_widow', env:'marvel'}, { name:'wonder_woman', env:'dc_comics'}, ]; console.log( characters .filter(character => character.env ==='marvel') .map(character =>Object.assign({}, character,{ alsoSeenIn:['Avengers']})) ); // [ // { name: 'ironman', env: 'marvel', alsoSeenIn: ['Avengers'] }, // { name: 'black_widow', env: 'marvel', alsoSeenIn: ['Avengers'] } // ] console.log( characters .reduce((acc, character)=>{ return character.env ==='marvel' ? acc.concat(Object.assign({}, character,{ alsoSeenIn:['Avengers']})) : acc; },[]) ) // [ // { name: 'ironman', env: 'marvel', alsoSeenIn: ['Avengers'] }, // { name: 'black_widow', env: 'marvel', alsoSeenIn: ['Avengers'] } // ]
上記は、初心者が JavaScript で配列をより効果的に使用できる方法です。 (ソース コード) の完全な紹介。JavaScript ビデオ チュートリアル について詳しく知りたい場合は、PHP 中国語 Web サイトに注目してください。
以上が初心者が JavaScript で配列をより上手に使用するにはどうすればよいでしょうか? (ソースコード)の詳細内容です。詳細については、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)

ホットトピック











WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法 はじめに: 技術の継続的な発展により、音声認識技術は人工知能の分野の重要な部分になりました。 WebSocket と JavaScript をベースとしたオンライン音声認識システムは、低遅延、リアルタイム、クロスプラットフォームという特徴があり、広く使用されるソリューションとなっています。この記事では、WebSocket と JavaScript を使用してオンライン音声認識システムを実装する方法を紹介します。

WebSocketとJavaScript:リアルタイム監視システムを実現するためのキーテクノロジー はじめに: インターネット技術の急速な発展に伴い、リアルタイム監視システムは様々な分野で広く利用されています。リアルタイム監視を実現するための重要なテクノロジーの 1 つは、WebSocket と JavaScript の組み合わせです。この記事では、リアルタイム監視システムにおける WebSocket と JavaScript のアプリケーションを紹介し、コード例を示し、その実装原理を詳しく説明します。 1.WebSocketテクノロジー

JavaScript と WebSocket を使用してリアルタイム オンライン注文システムを実装する方法の紹介: インターネットの普及とテクノロジーの進歩に伴い、ますます多くのレストランがオンライン注文サービスを提供し始めています。リアルタイムのオンライン注文システムを実装するには、JavaScript と WebSocket テクノロジを使用できます。 WebSocket は、TCP プロトコルをベースとした全二重通信プロトコルで、クライアントとサーバー間のリアルタイム双方向通信を実現します。リアルタイムオンラインオーダーシステムにおいて、ユーザーが料理を選択して注文するとき

WebSocket と JavaScript を使用してオンライン予約システムを実装する方法 今日のデジタル時代では、ますます多くの企業やサービスがオンライン予約機能を提供する必要があります。効率的かつリアルタイムのオンライン予約システムを実装することが重要です。この記事では、WebSocket と JavaScript を使用してオンライン予約システムを実装する方法と、具体的なコード例を紹介します。 1. WebSocket とは何ですか? WebSocket は、単一の TCP 接続における全二重方式です。

JavaScript と WebSocket: 効率的なリアルタイム天気予報システムの構築 はじめに: 今日、天気予報の精度は日常生活と意思決定にとって非常に重要です。テクノロジーの発展に伴い、リアルタイムで気象データを取得することで、より正確で信頼性の高い天気予報を提供できるようになりました。この記事では、JavaScript と WebSocket テクノロジを使用して効率的なリアルタイム天気予報システムを構築する方法を学びます。この記事では、具体的なコード例を通じて実装プロセスを説明します。私たちは

JavaScript チュートリアル: HTTP ステータス コードを取得する方法、特定のコード例が必要です 序文: Web 開発では、サーバーとのデータ対話が頻繁に発生します。サーバーと通信するとき、多くの場合、返された HTTP ステータス コードを取得して操作が成功したかどうかを判断し、さまざまなステータス コードに基づいて対応する処理を実行する必要があります。この記事では、JavaScript を使用して HTTP ステータス コードを取得する方法を説明し、いくつかの実用的なコード例を示します。 XMLHttpRequestの使用

使用法: JavaScript では、insertBefore() メソッドを使用して、DOM ツリーに新しいノードを挿入します。このメソッドには、挿入される新しいノードと参照ノード (つまり、新しいノードが挿入されるノード) の 2 つのパラメータが必要です。

JavaScript は Web 開発で広く使用されているプログラミング言語であり、WebSocket はリアルタイム通信に使用されるネットワーク プロトコルです。 2 つの強力な機能を組み合わせることで、効率的なリアルタイム画像処理システムを構築できます。この記事では、JavaScript と WebSocket を使用してこのシステムを実装する方法と、具体的なコード例を紹介します。まず、リアルタイム画像処理システムの要件と目標を明確にする必要があります。リアルタイムの画像データを収集できるカメラ デバイスがあるとします。
