javascript - JavaScript:从对象数组中删除空/未定义/空属性
问题描述
我有一个对象数组,想要删除 null/undefined/empty 元素...
例子:-
[
{
'Name': 'Sorav',
'Phone': '9090909090',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Gaurav',
'Phone': '',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Stack',
'Phone': '',
'Class': 'A',
'Age': null
}
]
预期输出:-
[
{
'Name': 'Sorav',
'Phone': '9090909090',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Gaurav',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Stack',
'Class': 'A'
}
]
解决方案
您可以使用 lodash 的pickBy
:
let data = [
{
'Name': 'Sorav',
'Phone': '9090909090',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Gaurav',
'Phone': '',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Stack',
'Phone': '',
'Class': 'A',
'Age': null
}
];
data = _.map(data, e =>
_.pickBy(e, _.identity)
);
console.log(data);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js"></script>
另一个使用 JavaScript 的解决方案.reduce
:
let data = [
{
'Name': 'Sorav',
'Phone': '9090909090',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Gaurav',
'Phone': '',
'Class': 'A',
'Age': '25'
},
{
'Name': 'Stack',
'Phone': '',
'Class': 'A',
'Age': null
}
];
data = data.map(item =>
Object.entries(item).reduce((acc, [key, value]) => {
if (value) {
acc[key] = value;
}
return acc;
}, {})
);
console.log(data);
推荐阅读
- javascript - 如何使用与此类似的东西将移动键从箭头键更改为 WASD?
- python - 为什么图例会阻止 matplotlib 中的文本?
- powershell - 通过 Powershell 脚本更改 vscode 中的集成终端标题
- macos - 有没有办法在不加入 Apple 开发者计划的情况下将网络扩展功能添加到 macOS 应用程序?
- r - 在管道内有条件并汇总未找到列名
- java - 从 http 端点读取 xml 内容,就像 Java 中的地图一样
- java - 是否有可用作环形列表的 Java LinkedList 方法?
- sql - 如何在 postgresql 中进行 upsert
- office-js - 桌面上加载项 sso 错误 13003,但我是 O365 工作帐户,为什么?
- javascript - 尝试使用自定义内容创建 React Navigation Drawer