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

Подробное объяснение метода объединения значений Object в JavaScript

Введение:В日常ной разработке мы можем встретить задачу копирования всех значений объекта в JavaScript, а также при разработке客户端 с использованием Electron, при обновлении встречаются проблемы с слиянием настроек. В этой статье будет дана краткое описание решения этой проблемы.

Описание: Например, у нас есть obj1, obj2, и нам нужно скопировать все значения obj1 с такими же полями и глубиной в obj2, при этом сохраняя структуру полей obj2, достаточно вызвать этот метод (используя ES6).

Код:

/**
     * Kopирует данные из 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]
          }
        }
      }
    },

Вот весь контент статьи, мы надеемся, что он поможет вам в изучении, и希望大家多多支持呐喊教程。

Заявление: содержимое этой статьи взято из Интернета, авторские права принадлежат соответствующему автору. Контент предоставлен пользователями Интернета, автоматически загружен, сайт не имеет права собственности, не underwent редактирование, и не несет ответственности за связанные с этим юридические последствия. Если вы обнаружите содержимое,涉嫌侵犯版权, пожалуйста, отправьте письмо по адресу: notice#oldtoolbag.com (во время отправки письма, пожалуйста, замените # на @) для отчета, и предоставьте соответствующие доказательства. При обнаружении фактов, сайт немедленно удаляет涉嫌侵权的内容.

Вам может понравиться