Ограничение версии Python или ключевых слов в джедае

Я имею сходство с решением Итана Брауна, но еще короче - pick. Другая функция pick2 немного длиннее (и медленнее), но позволяет переименовывать свойства в соответствии с образом ES6.

const pick = (o, ...props) => props.reduce((r, p) => p in o ? {...r, [p]: o[p]} : r, {})

const pick2 = (o, ...props) => props.reduce((r, expr) => {
  const [p, np] = expr.split(":").map( e => e.trim() )
  return p in o ? {...r, [np || p]: o[p]} : r
}, {}) 

Вот пример использования:

const d = { a: "1", c: "2" }

console.log(pick(d, "a", "b", "c"))        // -> { a: "1", c: "2" }
console.log(pick2(d, "a: x", "b: y", "c")) // -> { x: "1", c: "2" }
0
задан Amruta 29 March 2019 в 12:56
поделиться