JS オブジェクト配列の重複排除のための 3 つの方法の例と比較

JS オブジェクト配列の重複排除のための 3 つの方法の例と比較

1. 重複排除前後のデータの比較

// 元のデータは次のようになります // 重複排除後のデータは次のようになります [{ [{
  "商品ID": "1", "商品ID": "1",
  「クォータ」: 12、「クォータ」: 12、
  "SKUID": "1"
}, },
{ {
  "商品ID": "2", "商品ID": "2",
  「クォータ」: 12、「クォータ」: 12、
  "SKUID": "2"
}, }]
{
  "商品ID": "1",
  「クォータ」: 12,
  "SKUID": "1"
}]

2. 使い方

  1. フィルターとマップの使用🌟🌟🌟🌟🌟
  2. 削減の使用🌟🌟🌟🌟
  3. for ループ 🌟🌟🌟

結論: filter と Reduce の時間差はそれほど大きくありません。filter の方がわずかに高速ですが、filter 構文はより簡潔です。

1. フィルターとマップを使用する

コードは簡潔で使いやすいです。4行のコードで実行できます。平均所要時間は最短です。5つ星の推奨

関数 uniqueFunc(arr, uniId){
  const res = 新しい Map();
  arr.filter((item) => !res.has(item[uniId]) && res.set(item[uniId], 1)); を返します。
}

2. 削減を使用する

コードが少し増え、平均所要時間は最初のものと同等、4つ星の推奨

関数 uniqueFunc2(arr, uniId){
  ハッシュ = {}
  戻り値 arr.reduce((accum,item) => {
    ハッシュ[item[uniId]] ? '' : ハッシュ[item[uniId]] = true && accum.push(item)
    累積を返す
  },[])
}

3. forループの使用

1番目と2番目よりも少し時間がかかりますが、費やされる時間は平均的です。Samsungが推奨しています。

関数 uniqueFunc3(arr, uniId){
  obj = {} とします
  tempArr = [] とします
  for(var i = 0; i<arr.length; i++){
    if(!obj[arr[i][uniId]]){
      tempArr.push(arr[i])
      obj[arr[i][uniId]] = 真
    }
  }
  tempArr を返す
}

3. 2400データに対する3つの方法の処理時間の比較

テスト数フィルターマップ減らすforループ
1 0.139892578125 ミリ秒0.19189453125 ミリ秒0.2060546875 ミリ秒
2 0.12109375 ミリ秒0.1279296875 ミリ秒0.195068359375 ミリ秒
3 0.112060546875ミリ秒0.11767578125 ミリ秒0.174072265625 ミリ秒
4 0.10400390625 ミリ秒0.1728515625 ミリ秒0.18701171875 ミリ秒
5 0.10986328125 ミリ秒0.12890625 ミリ秒0.175048828125 ミリ秒
6 0.113037109375 ミリ秒0.10791015625 ミリ秒0.172119140625 ミリ秒
7 0.134033203125 ミリ秒0.129150390625 ミリ秒0.172119140625 ミリ秒

テスト時間のスクリーンショット表示

要約する

これで、JS オブジェクト配列の重複排除の 3 つの方法と比較に関する記事は終了です。より関連性の高い JS オブジェクト配列の重複排除コンテンツについては、123WORDPRESS.COM の以前の記事を検索するか、次の関連記事を引き続き参照してください。今後とも 123WORDPRESS.COM をよろしくお願いいたします。

以下もご興味があるかもしれません:
  • データページング効果を実現する js オブジェクト
  • JSオブジェクトの走査順序の詳細な説明
  • プレーンな JS オブジェクトの代わりに Map を使用する場合
  • JS オブジェクトのコピー (ディープ コピーとシャロー コピー)
  • js オブジェクト属性名でキャメルケースを下線に変換するサンプルコード
  • jsオブジェクトの読み取り速度の詳細な例

<<:  Ubuntu 18.04 に vsftpd をインストールするための実装コード

>>:  MySQL方言の簡単な紹介

推薦する

Linux で JDK 環境を構成する方法

1. 公式ウェブサイトにアクセスして、jdk-8u162-linux-x64.tar.gzなどのLi...

docker ログが取得できない問題の解決方法

毎日サービスをチェックしているときに、portainer からコンテナ ログを確認しようとしたところ...

Linux システムで Vim を使用してリモート ファイルを読み書きするコマンドの詳細な説明

vim の動作モードを設定する (一時的) :set (モード情報) :set nu — 行番号を表...

MySQL の基本クイックスタート知識のまとめ (マインドマップ付き)

目次序文1. データベースの基礎知識1. データベースとは何ですか? 2. データベースの分類3. ...

Centos8 (最小インストール) Python3.8+pip のインストール方法に関するチュートリアル

Python8のインストールを最小化した後、Python3.8.1をインストールしました。オンライン...

MySQL slow_log テーブルを InnoDB エンジンに変更することはできません。詳細な説明

背景mysql.slow_log からスロー クエリ ログを取得するのは遅く、テーブルは csv テ...

Mysql binlog ログファイルが大きすぎる場合の解決策

目次1. 関連するbinlog設定2. binlogに関する詳細設定2.1 バイナリログモードの変更...

RPM パッケージを使用して MySQL 5.7.18 をインストールするチュートリアル

システム:セントOS7 RPM パッケージ: mysql-コミュニティクライアント-5.7.18-1...

Ubuntu環境でPHPとNginxをコンパイルしてインストールする方法

この記事では、Ubuntu 環境で PHP と Nginx をコンパイルしてインストールする方法につ...

SQL Server での exists と except の使用法の概要

目次1. 存在する1.1 説明1.2 例1.3 交差/2017-07-21 2. 除く2.1 説明2...

MySQL InnoDB ロック メカニズムの詳細な例

1. InnoDBのロック機構InnoDB ストレージ エンジンは、行レベルのロックとトランザクショ...

Docker を使用して Redis マスター スレーブ レプリケーション クラスターを構築する

マスタースレーブレプリケーションモードのクラスターでは、通常、1 つのマスターノードと 2 つ以上の...

Apache をインストールした後、サービスを開始できません (サービスを開始するとエラー コード 1 が表示されます)

目次1. エラーメッセージ2. エラーの原因3. 解決策1. エラーメッセージ1. インストール後、...

ウェブサイト開発におけるフロントエンド開発者とアーティストの知識の違い

概要: 多くの企業、特にインターネット Web サイトを主な事業とする企業のほとんどが、「アーティス...

Node はあいまい検索用の検索ボックスを実装します

この記事の例では、検索ボックスでファジークエリを実装するためのNodeの具体的なコードを参考までに共...