javascript - 从 json 数组中删除未定义的键

标签 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}, 
      (...)];

我试过下面的代码,但没有用。我做错了什么?

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);

关于javascript - 从 json 数组中删除未定义的键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56483748/

相关文章:

javascript - "Fixing"来自 MySQL 的 JSON

javascript - 使用 VueJS 上传和查看输入文件

javascript - 使用 react.js 的进度条

javascript - 如何使 HTML 列表可复制为 Markdown

javascript - AngularJS 对象在 Controller 方法中丢失值

JavaScript:从对象数组的对象数组中提取属性值作为数组

javascript - 访问对象

javascript - 为什么 getElementById 在类内部调用时返回 null?

javascript - 简单值仅返回一些数组元素而不是全部

javascript - 如何检查一个对象的属性是否代表另一个对象的超集?