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

Javascript 从json数组中删除未定义的键,javascript,javascript-objects,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}, (...)]; 我尝试了以下代码,但不

我有以下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.parseJSON.stringifyx

var t=[{电子邮件:1234569@hhh.pt,第一名:乔,最后一名:巴斯托斯,性别:男,电话:3.51939e+11}, {电子邮件:,第一个:未定义,最后一个:未定义,性别:未定义,电话:未定义}]; console.logJSON.parseJSON.stringifyt 简单解决方案JSON.parseJSON.stringifyx

var t=[{电子邮件:1234569@hhh.pt,第一名:乔,最后一名:巴斯托斯,性别:男,电话:3.51939e+11}, {电子邮件:,第一个:未定义,最后一个:未定义,性别:未定义,电话:未定义}];
console.logJSON.parseJSON.stringifyt 一种简单的方法是字符串化和解析JSON

let jsonTest = { foo: 'foo', bar: undefined };
let allDefined = JSON.parse(JSON.stringify(jsonTest));
您还可以通过删除未定义的属性来完成此操作。如果没有平面对象,可以使其递归

let jsonTest = { foo: 'foo', bar: undefined };
Object.keys(jsonTest).forEach((key) => {

    if (typeof jsonTest[key] == 'undefined') { 

        delete jsonTest[key];
    }
});

一种简单的方法是字符串化和解析JSON

let jsonTest = { foo: 'foo', bar: undefined };
let allDefined = JSON.parse(JSON.stringify(jsonTest));
您还可以通过删除未定义的属性来完成此操作。如果没有平面对象,可以使其递归

let jsonTest = { foo: 'foo', bar: undefined };
Object.keys(jsonTest).forEach((key) => {

    if (typeof jsonTest[key] == 'undefined') { 

        delete jsonTest[key];
    }
});
试一试

让json=[{电子邮件:1234569@hhh.pt,第一名:乔,最后一名:巴斯托斯,性别:男,电话:3.51939e+11}, {电子邮件:,第一个:未定义,最后一个:未定义,性别:未定义,电话:未定义}, ]; json.mapx=>Object.keysx.mapk=>x[k]==未定义?删除x[k]:0; console.logjson 试一试

让json=[{电子邮件:1234569@hhh.pt,第一名:乔,最后一名:巴斯托斯,性别:男,电话:3.51939e+11}, {电子邮件:,第一个:未定义,最后一个:未定义,性别:未定义,电话:未定义}, ]; json.mapx=>Object.keysx.mapk=>x[k]==未定义?删除x[k]:0;
console.logjson;请添加您正在使用的不起作用的javascript。您编码了什么?JSON是javascript对象的字符串表示,而不是数组。这个问题中没有JSON。更不用说,JSON是一种字符串表示。命名一个不是字符串的变量json是很容易误导的。这不是一个答案,只是一个提示,您可能需要重新考虑:请添加您正在使用的不起作用的javascript。您编写了什么?JSON是javascript对象的字符串表示,而不是数组。这个问题中没有JSON。更不用说,JSON是一种字符串表示。命名一个不是字符串的变量json是很容易误导的。这不是一个答案,只是一个提示,您可能需要重新考虑:答案很好-加上:简单有效,我喜欢JSON.parseJSON.stringifyvalue!到目前为止,我所看到的最简单的方法就是删除数组中包含的对象中未定义的值!谢谢:回答得很好-另外:简单有效,我喜欢JSON.parseJSON.stringifyvalue!到目前为止,我所看到的最简单的方法就是删除数组中包含的对象中未定义的值!谢谢: