удалил yarn.lock и зафиксировал изменения, но все еще получал ошибку lockfiles

Один из возможных подходов:

const obj = { a: 1, b: null, c: 2, d: null }

const output = Object.entries (obj)
                     .reduce ((a, [k, v]) => v !== null ? [...a, [k, v]] : a, [])
      
console.log(output)

Тот же подход с локальной мутацией

Вот такой же подход с использованием локальной мутации из Array#reduce -коммулятора, который является более оптимальным.

Поскольку Array#reduce получает уже выделенный массив с N пустым слотом (где N является общее количество ключей во входном объекте), массив никогда не требует внутренней операции для увеличения своей длины. После того, как записи объекта уменьшены, мы отфильтровываем неопределенные элементы (те, что были null):

const obj = {
  a: 1,
  b: null,
  c: 2,
  d: null
}

const keyCount = Object.keys(obj).length

const output = Object.entries(obj)
  .reduce((a, kvp, i) => {
    if (kvp[1] !== null) a[i] = kvp
    return a
  }, Array(keyCount))
  .filter(kvp => kvp)

console.log(output)

JSPerf perf test фильтр + карта против уменьшения + фильтр

0
задан tk421 21 January 2019 в 01:57
поделиться