如何在JavaScript中选择或省略一个对象的属性

203 阅读1分钟

从JavaScript对象中选择或省略属性是一个相当常见的问题,没有一个内置的解决方案。在这篇文章中,我们将推出我们自己的pickomit 实用函数来帮助我们实现这些目标。

从一个对象中选择属性

如果我们想从一个JavaScript对象中选择任何数量的属性,我们可以实现以下pick 函数。

function pick(obj, ...props) {
  return props.reduce(function (result, prop) {
    result[prop] = obj[prop];
    return result;
  }, {});
}

让我们看看这个函数的实际应用吧pick 函数的第一个参数将是我们想要挑选的对象,随后的参数将是我们想要保留的键的名称。

const person = {
  name: 'Pete',
  dog: 'Daffodil',
  cat: 'Omar',
};

const dogPerson = pick(person, 'name', 'dog');

console.log(dogPerson);
// { name: "Pete", dog: "Daffodil" }

我们看到,通过提供person 对象作为第一个参数,然后提供字符串"name""dog" 作为后续参数,我们能够保留我们对象中的"name""dog" 道具,而不考虑"cat" 道具。

从一个对象中省略属性

如果我们想从一个JavaScript对象中省略任何数量的属性,我们可以实现以下omit 函数。

function omit(obj, ...props) {
  const result = { ...obj };
  props.forEach(function (prop) {
    delete result[prop];
  });
  return result;
}

同样,让我们使用同一个person 对象来看看这个功能的作用。

const person = {
  name: 'Pete',
  dog: 'Daffodil',
  cat: 'Omar',
};

const catPerson = omit(person, 'dog');

console.log(catPerson);
// { name: "Pete", cat: "Omar" }

我们可以看到,通过提供我们的person 对象作为第一个参数,并提供字符串"dog" 作为第二个参数,我们能够得到一个省略了"dog" 属性的新对象!