JavaScript オブジェクト配列で重複キーをマージし、それらの値を合計するにはどうすればよいですか?
オブジェクト配列内の重複キーのマージと値の合計
JavaScript では、オブジェクトの配列を操作することが一般的です。場合によっては、特定のプロパティを維持しながら、配列内のオブジェクトをグループ化して変更する必要が生じることがあります。このようなシナリオの 1 つは、類似のキーに関連付けられた値を合計することです。
オブジェクトの配列例を使用してこのタスクを検討してみましょう:
const objects = [ { name: 'P1', value: 150 }, { name: 'P1', value: 150 }, { name: 'P2', value: 200 }, { name: 'P3', value: 450 }, ];
私たちの目標は、オブジェクトを「name」プロパティでグループ化することです。そして、個別の「名前」ごとに「値」プロパティを合計します。目的の出力は次のようになります。
[ { name: 'P1', value: 300 }, { name: 'P2', value: 200 }, { name: 'P3', value: 450 }, ];
これを実現するには、JavaScript のオブジェクトおよび配列の操作機能を利用できます。段階的な解決策は次のとおりです:
1.合計値を格納するオブジェクトを作成する
まず、各「名前」の合計値を格納するコンテナとして機能する「holder」という空の JavaScript オブジェクトを作成します。
2.入力配列を反復処理する
「forEach」ループを使用して、入力配列 ('objects') 内の各オブジェクトを反復処理します。
3. 'holder' の既存の名前を確認します
ループ内で、'hasOwnProperty(d.name)' を使用して、現在のオブジェクトの 'name' プロパティが 'holder' オブジェクトのプロパティとしてすでに存在するかどうかを確認します。
4.値の合計または初期化
「name」プロパティが存在する場合、現在のオブジェクトの「value」プロパティを「holder」の対応するプロパティに追加します(例:「holder[d.name] = d.value)」 ')。 「name」プロパティが見つからない場合は、現在のオブジェクトの「value」プロパティで初期化します (「holder[d.name] = d.value」)。
5.マージされたオブジェクトを含む新しい配列を作成します
すべての値が合計されたら、マージされたオブジェクトを格納するために「obj2」という新しい空の配列を作成します。
6. 「holder」を反復処理し、マージされたオブジェクトをプッシュします
別のループを使用して、「holder」オブジェクトのプロパティ (「for (var prop inholder)」) を反復します。プロパティごとに、「name」プロパティと「value」プロパティを持つ新しいオブジェクトを作成し、それを「obj2」にプッシュします。
7.出力をログに記録します
最後に、'obj2' 配列をコンソールに記録して、合計された 'value' プロパティを持つマージされたオブジェクトを表示します。
サンプル コード
コード スニペットは次のとおりです。これは解決策を示しています:
const objects = [ { name: 'P1', value: 150 }, { name: 'P1', value: 150 }, { name: 'P2', value: 200 }, { name: 'P3', value: 450 }, ]; const holder = {}; objects.forEach(d => { if (holder.hasOwnProperty(d.name)) { holder[d.name] += d.value; } else { holder[d.name] = d.value; } }); const obj2 = []; for (var prop in holder) { obj2.push({ name: prop, value: holder[prop] }); } console.log(obj2);
これらの手順に従うことで、類似したキーに関連付けられた値を効果的にグループ化し、合計することができます。オブジェクトの配列。目的の出力に従って変更されたオブジェクトを含む新しい配列を作成します。
以上が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)

ホットトピック











JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

JavaScriptの最新トレンドには、TypeScriptの台頭、最新のフレームワークとライブラリの人気、WebAssemblyの適用が含まれます。将来の見通しは、より強力なタイプシステム、サーバー側のJavaScriptの開発、人工知能と機械学習の拡大、およびIoTおよびEDGEコンピューティングの可能性をカバーしています。

さまざまなJavaScriptエンジンは、各エンジンの実装原則と最適化戦略が異なるため、JavaScriptコードを解析および実行するときに異なる効果をもたらします。 1。語彙分析:ソースコードを語彙ユニットに変換します。 2。文法分析:抽象的な構文ツリーを生成します。 3。最適化とコンパイル:JITコンパイラを介してマシンコードを生成します。 4。実行:マシンコードを実行します。 V8エンジンはインスタントコンピレーションと非表示クラスを通じて最適化され、Spidermonkeyはタイプ推論システムを使用して、同じコードで異なるパフォーマンスパフォーマンスをもたらします。

JavaScriptは、現代のWeb開発のコア言語であり、その多様性と柔軟性に広く使用されています。 1)フロントエンド開発:DOM操作と最新のフレームワーク(React、Vue.JS、Angularなど)を通じて、動的なWebページとシングルページアプリケーションを構築します。 2)サーバー側の開発:node.jsは、非ブロッキングI/Oモデルを使用して、高い並行性とリアルタイムアプリケーションを処理します。 3)モバイルおよびデスクトップアプリケーション開発:クロスプラットフォーム開発は、反応および電子を通じて実現され、開発効率を向上させます。

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

この記事では、許可によって保護されたバックエンドとのフロントエンド統合を示し、next.jsを使用して機能的なedtech SaaSアプリケーションを構築します。 FrontEndはユーザーのアクセス許可を取得してUIの可視性を制御し、APIリクエストがロールベースに付着することを保証します

C/CからJavaScriptへのシフトには、動的なタイピング、ゴミ収集、非同期プログラミングへの適応が必要です。 1)C/Cは、手動メモリ管理を必要とする静的に型付けられた言語であり、JavaScriptは動的に型付けされ、ごみ収集が自動的に処理されます。 2)C/Cはマシンコードにコンパイルする必要がありますが、JavaScriptは解釈言語です。 3)JavaScriptは、閉鎖、プロトタイプチェーン、約束などの概念を導入します。これにより、柔軟性と非同期プログラミング機能が向上します。

私はあなたの日常的な技術ツールを使用して機能的なマルチテナントSaaSアプリケーション(EDTECHアプリ)を作成しましたが、あなたは同じことをすることができます。 まず、マルチテナントSaaSアプリケーションとは何ですか? マルチテナントSaaSアプリケーションを使用すると、Singの複数の顧客にサービスを提供できます
