javascript - 通过属性名称重新创建对象数组的最有效方法是什么?
问题描述
很简单的一个,但是我还在想它,我搜索了但我想找到最有效的方法,所以来发布它。在以下情况下,在 javascript 中重新创建对象(Object1 -> Object2)的最有效方法是什么?
Object1
[
{col1:'value1', col2:'value1', col3:'value1', col4:'value1', col5:'value1', col6:'value1'},
{col1:'value2', col2:'value2', col3:'value2', col4:'value2', col5:'value2', col6:'value2'},
{col1:'value3', col2:'value3', col3:'value3', col4:'value3', col5:'value3', col6:'value3'}
]
filterColumns = ['col1', 'col3', 'col5'];
Object2
[
{col1:'value1', col3:'value1', col5:'value1'},
{col1:'value2', col3:'value2', col5:'value2'},
{col1:'value3', col3:'value3', col5:'value3'}
]
解决方案
您需要遍历第一个数组中的每个对象。
减少对象内部的属性
const obj1 = [{
col1: 'value1',
col2: 'value1',
col3: 'value1',
col4: 'value1',
col5: 'value1',
col6: 'value1'
},
{
col1: 'value2',
col2: 'value2',
col3: 'value2',
col4: 'value2',
col5: 'value2',
col6: 'value2'
},
{
col1: 'value3',
col2: 'value3',
col3: 'value3',
col4: 'value3',
col5: 'value3',
col6: 'value3'
}
]
const filterColumns = ['col1', 'col3', 'col5'];
// map over object one
// reduce each object into a smaller size
const result = obj1.map(obj => filterColumns.reduce((r, col) => {
r[col] = obj[col];
return r;
}, {}));
console.log(result)
推荐阅读
- java - 尝试复制使用 JGit 拉取的文件时出现“拒绝访问”消息
- windows - 如何为 Windows 构建或获取原始最新版本的 GCC?
- factorial - 如何在 RISC-V 中实现阶乘函数
- aws-glue - AWS Glue Crawlers:是否可以推断出更改的列名并将它们映射到数据目录中的预定义列名?
- reactjs - 结合服务器数据库和嵌入式数据库电子/反应应用程序
- google-drive-api - 可以创建 Google 文档但无法创建 Google 表格
- ios - 如何从 Azure DevOps 下载 iOS 应用存档?
- apache-spark - 执行者决策的火花数
- python - 这是 python 字典的相同代码吗?
- ios - 如果应用程序已关闭或在后台,如何删除特定的远程通知