Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JS中的数组对象中筛选空数组_Javascript_Arrays_Reactjs_Object_Filter - Fatal编程技术网

Javascript 从JS中的数组对象中筛选空数组

Javascript 从JS中的数组对象中筛选空数组,javascript,arrays,reactjs,object,filter,Javascript,Arrays,Reactjs,Object,Filter,我有一个对象数组 { “名称”:“DLF商店”, “商户代码”:“EM499751e”, “地址”:“孟加拉国达卡1205链接路”, “经度”:90.3937913, “纬度”:23.7456808, “母子店”:“test-qa-26f7d03d”, “店铺类型”:“普通”, “关键人员”:[ { “名称”:“, “指定”:“, “电话号码”:“, “电子邮件”:” } ], “类别头”:[ { “用户名”:” } ], “bdm”:[ { “用户名”:” } ], “kam”:[ { “用户

我有一个对象数组

{
“名称”:“DLF商店”,
“商户代码”:“EM499751e”,
“地址”:“孟加拉国达卡1205链接路”,
“经度”:90.3937913,
“纬度”:23.7456808,
“母子店”:“test-qa-26f7d03d”,
“店铺类型”:“普通”,
“关键人员”:[
{
“名称”:“,
“指定”:“,
“电话号码”:“,
“电子邮件”:”
}
],
“类别头”:[
{
“用户名”:”
}
],
“bdm”:[
{
“用户名”:”
}
],
“kam”:[
{
“用户名”:”
}
],
“虚拟机”:[
{
“用户名”:”
}
],
“组织类型”:“小型”,
“is_mother_shop”:错,
“是否允许交付英雄”:false,
“是否允许货到付款”:false
}
我想过滤掉这个对象中的所有空数组。因此,在新创建的对象中进行筛选后,该对象中将不会有空数组或任何空键。

您可以

  • 阵列过滤
  • 过滤对象
并仅获取值不等于
'
的属性

const
过滤器=数据=>{
if(Array.isArray(数据)){
常数温度=数据减少((r,v)=>{
v=过滤器(v);
如果(v!='')r.push(v);
返回r;
}, []);
返回温度长度
临时雇员
: '';
}
if(数据类型和数据类型==='object'){
const temp=Object.entries(data).reduce((r[k,v])=>{
v=过滤器(v);
如果(v!='')r.push([k,v]);
返回r;
}, []);
返回温度长度
?对象。从条目(临时)
: '';
}
返回数据;
},
数据={名称:“DLF商店”,商户代码:“EM499751e”,地址:“孟加拉国达卡1205链接路”,经度:90.3937913,纬度:23.7456808,母亲商店代码:“test-qa-26f7d03d”,商店类型:“常规”,关键人员:[{姓名:,职务:,电话号码:,电子邮件:}],类别标题:[{用户名:}],bdm:[{用户名:}],kam:[{username:'}],vm:[{username:'}],组织类型:“small”,is\u mother\u shop:false,is\u delivery\u hero\u allowed:false,is\u cod\u allowed:false},
结果=过滤器(数据);
console.log(结果);
。作为控制台包装{最大高度:100%!重要;顶部:0;}
您可以

  • 阵列过滤
  • 过滤对象
并仅获取值不等于
'
的属性

const
过滤器=数据=>{
if(Array.isArray(数据)){
常数温度=数据减少((r,v)=>{
v=过滤器(v);
如果(v!='')r.push(v);
返回r;
}, []);
返回温度长度
临时雇员
: '';
}
if(数据类型和数据类型==='object'){
const temp=Object.entries(data).reduce((r[k,v])=>{
v=过滤器(v);
如果(v!='')r.push([k,v]);
返回r;
}, []);
返回温度长度
?对象。从条目(临时)
: '';
}
返回数据;
},
数据={名称:“DLF商店”,商户代码:“EM499751e”,地址:“孟加拉国达卡1205链接路”,经度:90.3937913,纬度:23.7456808,母亲商店代码:“test-qa-26f7d03d”,商店类型:“常规”,关键人员:[{姓名:,职务:,电话号码:,电子邮件:}],类别标题:[{用户名:}],bdm:[{用户名:}],kam:[{username:'}],vm:[{username:'}],组织类型:“small”,is\u mother\u shop:false,is\u delivery\u hero\u allowed:false,is\u cod\u allowed:false},
结果=过滤器(数据);
console.log(结果);
。作为控制台包装{最大高度:100%!重要;顶部:0;}


什么是空键?你尝试过什么?
“vm”:[{“username”:”“}],
-这是你想过滤掉的东西吗?即使数组不是空的,对象不是空的,也没有值-过滤掉它?@johntner是的,我想过滤掉带有空值的数组,如
“vm”:[{“username”:}],
@NinaScholz empty key不在对象中,但是,如果
name
字段是空的,则空key类似于
{“name”:“}
什么是空key?您尝试了什么?
“vm”:[{“username”:“}],
-这是您想要过滤掉的东西吗?即使数组不是空的,对象也不是空的,也没有值-过滤掉它?@johntner是的,我想过滤掉具有空值的数组,如
“vm”:[{“username”:“}],
@NinaScholz empty key不在对象中,但是,如果
name
字段为空,则空key类似于
{“name”:“}
var str = '{"name":"DLF Shop","merchant_code":"EM499751e","address":"Link Rd, Dhaka 1205, Bangladesh","longitude":90.3937913,"latitude":23.7456808,"mother_shop_slug":"test-qa-26f7d03d","shop_type":"regular","key_personnel":[{"name":"","designation":"","phone_no":"","email":""}],"category_head":[{"username":""}],"bdm":[{"username":""}],"kam":[{"username":"testforthis"}],"vm":[{"username":""}],"organisation_type":"small","is_mother_shop":false,"is_delivery_hero_allowed":false,"is_cod_allowed":false}';
    let json = JSON.parse(str);


    cleanObject = function(object) {
    Object
        .entries(object)
        .forEach(([k, v]) => {
            if (v && typeof v === 'object')
                cleanObject(v);
            if (v && 
                typeof v === 'object' && 
                !Object.keys(v).length || 
                v === null || 
                v === undefined ||
                v.length === 0
            ) {
                if (Array.isArray(object))
                    object.splice(k, 1);
                else if (!(v instanceof Date))
                    delete object[k];
            }
        });
    return object;
}

let newobj = cleanObject(json);
console.log(newobj);