• Как соеденить 2 массива?

    sergiks
    @sergiks Куратор тега JavaScript
    ♬♬
    Метод, как предлагали уже многие:
    1. склеить оба массива в один,
    2. пройтись последовательно по всем, собирая «словарь», где уникальный ключ name, а значение – весь объект с name и value. Перезаписывать предыдущий с таким же name или нет – по условию;
    3. вернуть массив значений этого «словаря» - уцелевшие уникальные объекты.


    const uniq = (a, b) => Object.values(
      a.concat(b).reduce(
        (acc, o) => {
          if (!acc[o.name]) acc[o.name] = o;
          else if (Number.isFinite(o.value)) acc[o.name].value = o.value;
          return acc;
        }, {}
      )
    );

    Для проверки, число это или нет, можно использовать метод Number.isFinite()

    Тесты
    //###########################
    const first = [{ name: 'first', value: '' }, { name: 'second', value: 10 }];
    const second = [{ name: 'first', value: 0 }, { name: 'third', value: 20 }];
    /*
    [
      {
        "name": "first",
        "value": 0
      },
      {
        "name": "second",
        "value": 10
      },
      {
        "name": "third",
        "value": 20
      }
    ]
    */
    
    //###########################
    const first = [{ name: 'first', value: 100 }, { name: 'second', value: 0 }];
    const second = [{ name: 'first', value: -111 }, { name: 'second', value: '' }];
    
    /*
    [
      {
        "name": "first",
        "value": -111
      },
      {
        "name": "second",
        "value": 0
      }
    ]
    */
    Ответ написан
    Комментировать