javascript - 从 json 数组中删除未定义的键
问题描述
我有以下 JS 数组。删除所有未定义键的行的最佳方法是什么?
json=[{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"},
{email: "", first: undefined, last: undefined, gender: undefined, phone: undefined},
(...)];
我尝试了以下代码,但无法正常工作。我究竟做错了什么?
cleanEmptyRows(json){
var i=0;
var row_to_remove=[];
json.forEach(function(element) {
for (var key in element) {
if(element[key]==null){
row_to_remove.push(i);
break;
}
}
i++;
});
row_to_remove.forEach(function(element){
var index = json.indexOf(element);
if (index > -1) {
json.splice(index, 1);
}
});
解决方案
简单的解决方案JSON.parse(JSON.stringify(x)),
var t = [{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"},
{email: "", first: undefined, last: undefined, gender: undefined, phone: undefined}];
console.log(JSON.parse(JSON.stringify(t)));
如果要删除整行,可以按照下面的代码,
var t = [{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: "3.51939e+11"},
{email: "", first: undefined, last: undefined, gender: undefined, phone: undefined},
{email: "1234569@hhh.pt", first: "Joao", last: "Bastos", gender: "Male", phone: undefined}];
var resultArray = t.filter((row) => {
var ignoreValue = Object.values(row).some(elem => elem === undefined);
return !ignoreValue ? true : false;
});
console.log(resultArray);
推荐阅读
- tensorflow-lite - TPU USB 加速器转珊瑚板
- ajax - 我无法通过 Ajax 通过 httppost 将数据发送到 api
- node.js - 将 Excel 工作簿中的数据导入 Node.js 中的 sqlite3 数据库
- python - 如何访问和打印在另一个函数中使用的变量并评估为 True
- pdf - y 坐标为零的 Td 运算符
- php - POST请求后如何获取页面正文
- autodesk-forge - DWG 文件字体显示不正确
- typescript - 如何让量角器测试等待多个元素而不依赖 SELENIUM_PROMISE_MANAGER 进行同步?
- html - BeautifulSoup4 标签内容未显示
- android - 在 Android (API 30) 中以编程方式连接到特定的 wifi 网络