java去掉数组中的null6,js删除对象/数组中null、undefined、空对象及空数组方法示例...

这两天在项目中遇到后台需要传的数据为不能有null,不能有空值,而这个数据又是一个庞大的对象,对组集合,所以写了个方法来解决这个问题。为了兼具所有的种类类型,封装了方法,代码如下:

let obj = {

a: {

a_1: 'qwe',

a_2: undefined,

a_3: function (a, b) {

return a + b;

},

a_4: {

a_4_1: 'qwe',

a_4_2: undefined,

a_4_3: function (a, b) {

return a + b;

},

a_4_4: {

a_4_4_1: undefined,

a_4_4_2: undefined,

a_4_4_3: undefined,

a_4_4_4: {

a_4_4_4_1: undefined,

a_4_4_4_2: undefined,

a_4_4_4_3: undefined,

a_4_4_4_4: undefined,

a_4_4_4_5: undefined,

a_4_4_4_6: undefined

}

}

}

},

b: [{

a_1: 'qwe',

a_2: undefined,

a_3: function (a, b) {

return a + b;

},

a_4: {

a_4_1: 'qwe',

a_4_2: undefined,

a_4_3: function (a, b) {

return a + b;

},

a_4_4: {

a_4_4_1: undefined,

a_4_4_2: undefined,

a_4_4_3: undefined,

a_4_4_4: {

a_4_4_4_1: undefined,

a_4_4_4_2: undefined,

a_4_4_4_3: undefined,

a_4_4_4_4: undefined,

a_4_4_4_5: undefined,

a_4_4_4_6: undefined

}

}

}

}],

c: [{

a: undefined,

b: undefined,

c: undefined,

d: undefined

}, {

a: undefined,

b: undefined,

c: undefined,

d: undefined

}]

};

以下是javaScript部分:

//判断对象是否没有属性,如{}或者[]

function isEmptyObj(o) { for (let attr in o) return !1; return !0 }

function processArray(arr) {

for (let i = arr.length - 1; i >= 0; i--) {

if (arr[i] === null || arr[i] === undefined) arr.splice(i, 1);

else if (typeof arr[i] == 'object') removeNullItem(arr[i], arr, i);

}

return arr.length == 0

}

function proccessObject(o) {

for (let attr in o) {

if (o[attr] === null || o[attr] === undefined) delete o[attr];

else if(typeof o[attr]=='object') {

removeNullItem(o[attr]);

if (isEmptyObj(o[attr])) delete o[attr];

}

}

}

function removeNullItem(o,arr,i) {

let s = ({}).toString.call(o);

if (s == '[object Array]') {

if (processArray(o) === true) {//o也是数组,并且删除完子项,从所属数组中删除

if (arr) arr.splice(i, 1);

}

}

else if (s == '[object Object]') {

proccessObject(o);

if (arr&&isEmptyObj(o)) arr.splice(i, 1);

}

}

removeNullItem(obj)

console.log(obj)

如果只处理对象null,undefined项,不移除数组中undefined,null的项,保持数组长度则去掉removeNullItem,processArray删除数项即可,测试数据在上面示例中

cc5ddcbb152929f2157cba5119b2aece.png

-收缩JavaScript代码

function processArray(arr) {

for (let i = arr.length - 1; i >= 0; i--) {

/*if (arr[i] === null || arr[i] === undefined) arr.splice(i, 1);

else */if (typeof arr[i] == 'object') removeNullItem(arr[i], arr, i);

}

return arr.length == 0

}

function removeNullItem(o,arr,i) {

let s = ({}).toString.call(o);

if (s == '[object Array]') {

if (processArray(o) === true) {//o也是数组,并且删除完子项,从所属数组中删除

//if (arr) arr.splice(i, 1);

}

}

else if (s == '[object Object]') {

proccessObject(o);

//if (arr&&isEmptyObj(o)) arr.splice(i, 1);

}

}

附:javascript 判断变量 是否为空null,undefined, 空数组,空对象,空Object,字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为false。由于Object没有length用

Object.keys()适用于数组(IE8不支持此属性),对象 返回可枚举的实例属性名组成的数组来判断是否为空。

利用逻辑判断中or (||)只要有一项为真则不再计算下一个表达式 来实现不管传入的参数是何种类型。只要符合我对空的定义即返回true。

function IsNothing(e) {

var isNt = e === 0 || e === false || e === null || e === undefined || Object.keys(e).length === 0 || /^\s*$/gim.test(e.toString());

return isNt;

}

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值