如何获取 javascript 对象属性的子集

2022-08-29 22:35:06

假设我有一个对象:

elmo = { 
  color: 'red',
  annoying: true,
  height: 'unknown',
  meta: { one: '1', two: '2'}
};

我想用它的属性子集创建一个新对象。

 // pseudo code
 subset = elmo.slice('color', 'height')

 //=> { color: 'red', height: 'unknown' }

我怎样才能做到这一点?


答案 1

使用对象解构和属性速记

const object = { a: 5, b: 6, c: 7  };
const picked = (({ a, c }) => ({ a, c }))(object);

console.log(picked); // { a: 5, c: 7 }

来自Philipp Kewisch:

这实际上只是一个立即调用的匿名函数。所有这些都可以在MDN上的“解构分配”页面上找到。这是一个扩展的表单

let unwrap = ({a, c}) => ({a, c});

let unwrap2 = function({a, c}) { return { a, c }; };

let picked = unwrap({ a: 5, b: 6, c: 7 });

let picked2 = unwrap2({a: 5, b: 6, c: 7})

console.log(picked)
console.log(picked2)

答案 2

我建议看看Lodash;它有很多很棒的实用功能。

例如,pick() 正是你所寻求的:

var subset = _.pick(elmo, ['color', 'height']);

小提琴