English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

JavaScriptのObject値の合併方法の詳細

前書き:日常開発作業では、jsのオブジェクト内のすべての値のコピー作業に直面することがあります。また、electronでクライアントを開発し、リリース時の設定統合問題に直面することがあります。そこで、本文ではこの問題に対する簡単な解決策を述べます。

紹介:例えば、obj1, obj2、obj1の中のすべてのobj2の中の同じフィールドの同じ深さの値をobjにコピーする必要があります。2そして、obj2フィールド構造が変更されない場合、このメソッドを呼び出すだけで良い(ESを使用しています)。6書き方)。

コード:

/**
     * srcの中のデータをdistにコピーし、distの構造を保持します。
     * @param src
     * @param dist
     */
    copyValue(src, dist) {
      if (!src || typeof(src) !== 'object' || typeof(dist) !== 'object'){
        return ;
      }
      let keys = Object.keys(dist)
      if (keys && keys.length > 0 && isNaN(keys[0])){
        keys.forEach(key => {
          let value = dist[key]
          let srcVal = src[key]
          // オブジェクトかどうかを確認し、オブジェクトの場合はさらに再帰的に再帰します、そうでない場合はアサインまたは無視します
          if (value !== undefined && typeof(value) === 'object' && srcVal && typeof(srcVal) === 'object' && srcVal[0] === undefined){
            copyValue(srcVal, value)
          } else if (value !== undefined && srcVal && typeof(value) == typeof (srcVal)){
            // ソースデータが存在し、型が一致する場合、アサインを開始します
            dist[key] = src[key]
          }
        }
      }
    ,

これでこの記事のすべての内容が終わりました。皆様の学習に役立てば幸いです。また、ナイアラテキストゥールのサポートを多くいただければと思います。

声明:この記事の内容はインターネットから取得しており、著作権者に帰属します。インターネットユーザーが自発的に貢献し、アップロードした内容であり、このウェブサイトは所有権を持ちません。また、人間による編集は行われておらず、関連する法的責任も負いません。著作権侵害が疑われる内容がある場合は、メールを送信して:notice#oldtoolbag.com(メールで送信時は、#を@に変更してください。侵害を報告し、関連する証拠を提供してください。一旦確認ができたら、このサイトは即座に侵害された内容を削除します。)

おすすめ