假设我有一个对象:
{
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 完成此任务的干净方法,因此我可以使用扩展运算符。
原文由 29er 发布,翻译遵循 CC BY-SA 4.0 许可协议
如果您有一个允许值列表,则可以使用以下方法轻松地将它们保留在对象中:
这使用:
Object.keys
以raw
(原始数据)列出所有属性,然后Array.prototype.filter
选择允许列表中存在的键,使用Array.prototype.includes
以确保它们存在Array.prototype.reduce
构建一个仅具有允许属性的新对象。这将使用允许的属性进行浅拷贝(但不会复制属性本身)。
您还可以使用 对象扩展运算符 创建一系列对象而不改变它们(感谢 rjerue 提到这一点):
出于琐事的目的,如果您想从原始数据中删除不需要的字段(我 不 建议这样做,因为它涉及一些丑陋的突变),您可以像这样反转
includes
检查:我包括这个例子来展示一个基于突变的解决方案,但我不建议使用它。