首页 >web前端 >js教程 >ES6中如何通过Key过滤对象属性?

ES6中如何通过Key过滤对象属性?

Linda Hamilton
Linda Hamilton原创
2024-11-09 17:02:02304浏览

How to Filter Object Properties by Key in ES6?

ES6 中按键过滤对象属性

在 JavaScript 中,通常需要根据特定条件过滤对象属性。 ES6 提供了一种干净、高效的方法来通过展开运算符来实现此目的。

问题:

给定一个如下对象:

{
  item1: { key: 'sdfd', value: 'sdfd' },
  item2: { key: 'sdfd', value: 'sdfd' },
  item3: { key: 'sdfd', value: 'sdfd' }
}

目标是创建一个新对象,该对象仅包含具有特定键的属性,例如如:

{
  item1: { key: 'sdfd', value: 'sdfd' },
  item3: { key: 'sdfd', value: 'sdfd' }
}

解决方案:

ES6 允许我们使用 Object.keys() 和 Array.filter() 方法的组合来过滤对象属性,接下来是 Array.reduce() 方法来创建新对象。

提供的代码演示了这一点方法:

const raw = {
  item1: { key: 'sdfd', value: 'sdfd' },
  item2: { key: 'sdfd', value: 'sdfd' },
  item3: { key: 'sdfd', value: 'sdfd' }
};

const allowed = ['item1', 'item3'];

const filtered = Object.keys(raw)
  .filter(key => allowed.includes(key))
  .reduce((obj, key) => {
    obj[key] = raw[key];
    return obj;
  }, {});

console.log(filtered);

在此代码中:

  1. Object.keys(raw) 将对象键提取到数组中。
  2. Array.filter(key = > allowed.includes(key)) 根据允许的值过滤键。
  3. Array.reduce((obj, key) => { /* ... */ }, {}) 将过滤后的键缩减为新对象,从原始对象复制相应的属性值。

以上是ES6中如何通过Key过滤对象属性?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn