Fáb*_*újo 1 javascript javascript-objects
我有以下 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},
(...)];
Run Code Online (Sandbox Code Playgroud)
我试过下面的代码,但没有用。我究竟做错了什么?
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);
}
});
Run Code Online (Sandbox Code Playgroud)
简单的解决方案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)));Run Code Online (Sandbox Code Playgroud)
如果你想删除整行,你可以按照下面的代码,
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);Run Code Online (Sandbox Code Playgroud)