現実世界のシナリオを通じて説明される JavaScript 配列メソッド
JavaScript の配列メソッドのドキュメントを見て、それらが実際にどのように機能するのか疑問に思ったことはありますか?
コーディングを始めたとき、これらのメソッドを理解するために文字通り壁に頭をぶつけたのを覚えています。信じてください。配列メソッドは技術面接を突破するためだけに存在するのではなく、現実世界の開発において日々パフォーマンスを発揮する友人です。
今日は、実際のプロジェクトでこれらの配列メソッドをいつどのように使用するかを説明します。
読み終わる頃には、配列メソッドによってコードが明確になり、読みやすくなっていることがわかります…そして、言うまでもなく、コードを健全で保守しやすく保つのにも役立ちます。
基本的なことから始めましょう
map() と filter()
まず、毎日使用する可能性が高いいくつかの配列メソッド、map() と filter() から始めましょう。
map() を使用した製品価格計算ツールの構築
あなたは電子商取引サイトを構築しており、20% 割引する必要がある商品のリストがあるとします。
商品データは次のようになります:
const products = [ { name: "Gaming Mouse", price: 59.99 }, { name: "Mechanical Keyboard", price: 129.99 }, { name: "4K Monitor", price: 349.99 } ];
面倒な for ループを記述する代わりに、map() を使用すると、これが非常にきれいになります。
const discountedPrices = products.map(product => ({ ...product, price: (product.price * 0.8).toFixed(2) }));
各価格は現在割引されており、元の製品情報はすべて保持されています。クリーンでシンプル。
filter() を使用したスマート検索機能の作成
それでは、もっとクールなもの、つまり実際に複数のフィールドにわたって機能するスマート検索を構築してみましょう。
次のユーザー データがあると仮定しましょう:
const users = [ { name: "Sarah Smith", email: "sarah@gmail.com", role: "developer" }, { name: "John Doe", email: "john@company.com", role: "designer" }, { name: "Mike Wilson", email: "mike@gmail.com", role: "developer" } ];
これは、filter() を使用して簡単に検索する方法です:
const searchUsers = (query) => { return users.filter(user => user.name.toLowerCase().includes(query.toLowerCase()) || user.email.toLowerCase().includes(query.toLowerCase()) || user.role.toLowerCase().includes(query.toLowerCase()) ); };
そうです、名前、メールアドレス、役割から検索できます。 searchUsers("dev") を試してみると、開発者のみがフィルタリングされます。
それが素晴らしいと思われた場合は、次のセクションでreduce()を説明するまで待ってください。
reduce() - 単なる合計ではありません
ほとんどの開発者は主に、reduce() を数値を追加するためだけに使用します。しかし実際は、それ以上のことができるということです。信じてください。
ショッピングカートの合計を計算しています
実際のシナリオは、割引と税金を考慮して、ショッピング カート内の製品の合計コストを計算することです。これを見てください:
const cartItems = [ { name: "Nike Air Max", price: 129.99, quantity: 2, discount: 20 }, { name: "Adidas Hoodie", price: 89.99, quantity: 1, discount: 0 }, { name: "Running Socks", price: 12.99, quantity: 3, discount: 10 } ]; const cartTotal = cartItems.reduce((total, item) => { const itemTotal = item.price * item.quantity; const discount = (itemTotal * item.discount) / 100; return total + (itemTotal - discount); }, 0);
いいですね?実装する必要がある関数は、数量、割引、合計計算の関数を 1 つだけです。
ドキュメント統計ツール
テキスト文書を処理してみてはどうでしょうか?すべての単語、文字、文章をカウントします:
const documentStats = paragraphs.reduce((stats, paragraph) => { return { words: stats.words + paragraph.split(' ').length, characters: stats.characters + paragraph.length, sentences: stats.sentences + paragraph.split(/[.!?]+/).length - 1, paragraphs: stats.paragraphs + 1 }; }, { words: 0, characters: 0, sentences: 0, paragraphs: 0 });
では、reduce() が複数のものを同時に処理する方法がどれほど美しいかわかりませんか?これは、個別のループを使用するよりもはるかに優れています。
プロのヒント: Reduce() コールバックが大きくなりすぎる場合は、常に小さな関数を使用するのが賢明です。
find() と some()
認証およびモデレーション システムをよりシンプルにする 2 つの方法に取り組んでみましょう。
ユーザー認証システムの作成
ログイン システムを構築したことがありますか? find() を使用するとユーザーの検索が非常に簡単になる方法は次のとおりです:
const products = [ { name: "Gaming Mouse", price: 59.99 }, { name: "Mechanical Keyboard", price: 129.99 }, { name: "4K Monitor", price: 349.99 } ];
面倒なループや複雑な if ステートメントはもう必要ありません。 find() は必要なものを正確に返します。
コンテンツ管理ツールの構築
ここで some() が威力を発揮します - コンテンツを禁止された単語やパターンと照合してチェックします:
const discountedPrices = products.map(product => ({ ...product, price: (product.price * 0.8).toFixed(2) }));
some() が複数の条件を一度にチェックするのにどのように役立つかを見てください。クリーンで、読みやすく、保守しやすい。
簡単なヒント: some() は一致するものが見つかるとすぐにチェックを停止します。大規模なデータセットを扱うときのパフォーマンスに最適です。
flat() と flatMap()
配列フラットナー
ネストされた配列をフラット化しようとしたことがありますか? flat() はあなたの親友です。これらのネストされた配列を単一のレベルに平滑化します。
const users = [ { name: "Sarah Smith", email: "sarah@gmail.com", role: "developer" }, { name: "John Doe", email: "john@company.com", role: "designer" }, { name: "Mike Wilson", email: "mike@gmail.com", role: "developer" } ];
深さパラメータを使用して、平坦化する深さを指定することもできます。深さがない場合、デフォルトは 1 になります。
flatMap() - 複数の返信を持つコメント システム
flatMap() は、ネストされた配列上の flat() と map() の組み合わせと考えてください。配列をマップし、結果を平坦化します。すべてを一度に実行します!
これは、各コメントに複数の返信を含めることができる実際のコメント システムです:
const searchUsers = (query) => { return users.filter(user => user.name.toLowerCase().includes(query.toLowerCase()) || user.email.toLowerCase().includes(query.toLowerCase()) || user.role.toLowerCase().includes(query.toLowerCase()) ); };
flatMap() は、項目を変換し、ネストされた結果を処理する必要がある場合に最適です。 1 つの料金で 2 つの方法を利用できるようなものです!
これはもう 1 つの実用的な例です - ソーシャル メディアの投稿からハッシュタグを抽出します:
const cartItems = [ { name: "Nike Air Max", price: 129.99, quantity: 2, discount: 20 }, { name: "Adidas Hoodie", price: 89.99, quantity: 1, discount: 0 }, { name: "Running Socks", price: 12.99, quantity: 3, discount: 10 } ]; const cartTotal = cartItems.reduce((total, item) => { const itemTotal = item.price * item.quantity; const discount = (itemTotal * item.discount) / 100; return total + (itemTotal - discount); }, 0);
flatMap() が、空の可能性のある結果の変換と平坦化の両方をどのように処理するかをご覧ください。かなり滑らかです!
each() と include()
フォーム検証システムの構築
私たちが毎日使用するもの、つまり堅牢なフォームバリデーターを作成してみましょう。以下は、every() がそれをきれいにする方法です:
const documentStats = paragraphs.reduce((stats, paragraph) => { return { words: stats.words + paragraph.split(' ').length, characters: stats.characters + paragraph.length, sentences: stats.sentences + paragraph.split(/[.!?]+/).length - 1, paragraphs: stats.paragraphs + 1 }; }, { words: 0, characters: 0, sentences: 0, paragraphs: 0 });
every() は、すべてのルールが合格したかどうかをチェックします。すべてが真実である必要がある検証に最適であることがわかります。
権限チェッカーの構築
includes() を使用すると、アクセス許可のチェックが非常に簡単になる方法を次に示します。
const users = [ { id: 1, email: "alex@tech.com", password: "hashed_password_1", attempts: 0 }, { id: 2, email: "sam@tech.com", password: "hashed_password_2", attempts: 1 } ]; const authenticateUser = (email, password) => { const user = users.find(u => u.email === email); if (!user) return { status: "error", message: "User not found" }; if (user.attempts >= 3) return { status: "error", message: "Account locked" }; return validatePassword(user, password); };
includes() を使用すると、コードが平易な英語のように読みやすくなります。複雑な if ステートメントやループよりもはるかに優れています。
データの順序付け (sort())
基本的なアルファベット順以外にデータを並べ替える必要があったことがありますか? sort() は、ほとんどの開発者が考えているよりもはるかに強力です。
カスタムテーブルソーターの開発
これは、さまざまなデータ型を処理する実際のテーブル ソーターです:
const bannedWords = ["spam", "scam", "inappropriate"]; const moderateContent = (content) => { const containsBannedWords = bannedWords.some(word => content.toLowerCase().includes(word) ); const hasSpamPatterns = content.includes("!!!") || content === content.toUpperCase(); return { isSpam: containsBannedWords || hasSpamPatterns, reason: containsBannedWords ? "Banned words detected" : "Spam patterns found" }; };
列ごとに関数を分ける必要はもうありません。 1 台の仕分け機だけですべてを処理します!
リーダーボード システムの構築
タイブレークを処理するリーダーボード ソーターをチェックしてください:
const products = [ { name: "Gaming Mouse", price: 59.99 }, { name: "Mechanical Keyboard", price: 129.99 }, { name: "4K Monitor", price: 349.99 } ];
複数の並べ替え基準をどのように処理するかが分かりましたか?先に得点し、次に勝ち、プレータイムが最も短いと同点が破られます。
簡単なヒント: 元の順序を維持する必要がある場合は、並べ替える前に必ず配列のコピーを作成してください。
ベストプラクティスとパフォーマンス
先に進む前に、配列メソッドの動作を改善するためのちょっとした知恵を紹介してまとめましょう。
いつどの方法を使用するか
これが、あなたがやろうとしていることに基づいた私の実用的なガイドです:
const discountedPrices = products.map(product => ({ ...product, price: (product.price * 0.8).toFixed(2) }));
それでは、forEach と for ループについて心配するのはやめてください。代わりにこれらに焦点を当ててください。
やるかやらないかは実際には重要です
出発する前に最後に。物事をより簡単に、より良く行う方法を常に探してください。例:
これの代わりに:
const users = [ { name: "Sarah Smith", email: "sarah@gmail.com", role: "developer" }, { name: "John Doe", email: "john@company.com", role: "designer" }, { name: "Mike Wilson", email: "mike@gmail.com", role: "developer" } ];
常にこれを実行してください:
const searchUsers = (query) => { return users.filter(user => user.name.toLowerCase().includes(query.toLowerCase()) || user.email.toLowerCase().includes(query.toLowerCase()) || user.role.toLowerCase().includes(query.toLowerCase()) ); };
それだけです!これで、JavaScript の配列メソッドに関する実践的な知識が得られました。賢く使ってください!
覚えておいてください: コードの可読性は、マイクロ最適化よりも優れています。コードを最も明確にする方法を最初に選択してください。
ご質問はありますか?以下のコメント欄で私に連絡してください! ?
X (旧 Twitter) で私をフォローして、JavaScript の知恵を毎日入手してください!簡単なコードのヒントを共有したり、現実世界の問題をデバッグしたり、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)

ホットトピック











Pythonは、スムーズな学習曲線と簡潔な構文を備えた初心者により適しています。 JavaScriptは、急な学習曲線と柔軟な構文を備えたフロントエンド開発に適しています。 1。Python構文は直感的で、データサイエンスやバックエンド開発に適しています。 2。JavaScriptは柔軟で、フロントエンドおよびサーバー側のプログラミングで広く使用されています。

Web開発におけるJavaScriptの主な用途には、クライアントの相互作用、フォーム検証、非同期通信が含まれます。 1)DOM操作による動的なコンテンツの更新とユーザーインタラクション。 2)ユーザーエクスペリエンスを改善するためにデータを提出する前に、クライアントの検証が実行されます。 3)サーバーとのリフレッシュレス通信は、AJAXテクノロジーを通じて達成されます。

現実世界でのJavaScriptのアプリケーションには、フロントエンドとバックエンドの開発が含まれます。 1)DOM操作とイベント処理を含むTODOリストアプリケーションを構築して、フロントエンドアプリケーションを表示します。 2)node.jsを介してRestfulapiを構築し、バックエンドアプリケーションをデモンストレーションします。

JavaScriptエンジンが内部的にどのように機能するかを理解することは、開発者にとってより効率的なコードの作成とパフォーマンスのボトルネックと最適化戦略の理解に役立つためです。 1)エンジンのワークフローには、3つの段階が含まれます。解析、コンパイル、実行。 2)実行プロセス中、エンジンはインラインキャッシュや非表示クラスなどの動的最適化を実行します。 3)ベストプラクティスには、グローバル変数の避け、ループの最適化、constとletsの使用、閉鎖の過度の使用の回避が含まれます。

PythonとJavaScriptには、コミュニティ、ライブラリ、リソースの観点から、独自の利点と短所があります。 1)Pythonコミュニティはフレンドリーで初心者に適していますが、フロントエンドの開発リソースはJavaScriptほど豊富ではありません。 2)Pythonはデータサイエンスおよび機械学習ライブラリで強力ですが、JavaScriptはフロントエンド開発ライブラリとフレームワークで優れています。 3)どちらも豊富な学習リソースを持っていますが、Pythonは公式文書から始めるのに適していますが、JavaScriptはMDNWebDocsにより優れています。選択は、プロジェクトのニーズと個人的な関心に基づいている必要があります。

開発環境におけるPythonとJavaScriptの両方の選択が重要です。 1)Pythonの開発環境には、Pycharm、Jupyternotebook、Anacondaが含まれます。これらは、データサイエンスと迅速なプロトタイピングに適しています。 2)JavaScriptの開発環境には、フロントエンドおよびバックエンド開発に適したnode.js、vscode、およびwebpackが含まれます。プロジェクトのニーズに応じて適切なツールを選択すると、開発効率とプロジェクトの成功率が向上する可能性があります。

CとCは、主に通訳者とJITコンパイラを実装するために使用されるJavaScriptエンジンで重要な役割を果たします。 1)cは、JavaScriptソースコードを解析し、抽象的な構文ツリーを生成するために使用されます。 2)Cは、Bytecodeの生成と実行を担当します。 3)Cは、JITコンパイラを実装し、実行時にホットスポットコードを最適化およびコンパイルし、JavaScriptの実行効率を大幅に改善します。

Pythonはデータサイエンスと自動化により適していますが、JavaScriptはフロントエンドとフルスタックの開発により適しています。 1. Pythonは、データ処理とモデリングのためにNumpyやPandasなどのライブラリを使用して、データサイエンスと機械学習でうまく機能します。 2。Pythonは、自動化とスクリプトにおいて簡潔で効率的です。 3. JavaScriptはフロントエンド開発に不可欠であり、動的なWebページと単一ページアプリケーションの構築に使用されます。 4. JavaScriptは、node.jsを通じてバックエンド開発において役割を果たし、フルスタック開発をサポートします。
