这两天在项目中遇到后台需要传的数据为不能有null,不能有空值,而这个数据又是一个庞大的对象,对组集合,所以写了个方法来解决这个问题。为了兼具所有的种类类型,封装了方法,代码如下:
让obj={ a: { a_1: 'qwe ',a_2:未定义,a_3:函数(a,b) {返回a b;},a_4: { a_4_1: 'qwe ',a_4_2:未定义,a_4_3:函数(a,b) {返回a b;},a_4_4: { a_4_4_1:未定义,a_4_4_2:未定义,a_4_4_3:未定义,a _ 4 _ 4 _ 4: { a _ 4 _ 4 _ 4 _ 1:未定义,a_4_4_4_2:未定义,a _ 4 _ 4 _ 3:未定义,a _ 4 _ 4 _ 4:未定义},a_4: { a_4_1: 'qwe ',a_4_2:未定义,a_4_3:函数(a,b) {返回a b;},a_4_4: { a_4_4_1:未定义,a_4_4_2:未定义,a_4_4_3:未定义,a _ 4 _ 4 _ 4: { a _ 4 _ 4 _ 4 _ 1:未定义,a_4_4_4_2:未定义,a _ 4 _ 4 _ 3:未定义,a _ 4 _ 4 _ 4:未定义以下是爪哇岛描述语言部分:
//判断对象是否没有属性,如{}或者[]函数isEmptyObj(o) { for(让o中的attr)返回!1;回来!0 }函数processArray(arr) { for(让我=arr。长度-1;I=0;I-){ if(arr[I]==null | | arr[I]==未定义)arr。拼接(,1);否则if(arr[I]==' object ')removeNullitem(arr[I],arr,I);}返回逮捕。length==0 }函数ProcessObject(o){ for(让属性进入o){ if(o[attr]==null | | o[attr]==未定义)删除o[attr];else if(o[attr]==' object '){ removeNullitem(o[attr]);if (isEmptyObj(o[attr])删除o[attr];} } }函数removeNullItem(o,arr,I){ let s=({ })。tostring。呼叫(o);if(s=='[对象数组]'){ if(processArray(o)==true){//o也是数组,并且删除完子项,从所属数组中删除if (arr) arr.splice(i,1);} } else if(s=='[Object Object]'){ proccessObject(o);if(arrisempyobj(o))arr。拼接(,1);} } removeNullitem(obj)控制台。日志如果只处理对象null,未定义项,不移除数组中未定义,空的项,保持数组长度则去掉removeNullItem,processArray删除数项即可,测试数据在上面示例中
-收缩Java脚本语言代码
函数processArray(arr) { for(让我=arr。长度-1;I=0;I-){/* if(arr[I]==null | | arr[I]==未定义)arr。拼接(,1);else */if(arr[I]=' object ')removeNullitem(arr[I],arr,I);} return arr.length==0 }函数removeNullItem(o,arr,I){ let s=({ })。tostring。呼叫(o);if(s=='[对象数组]'){ if(processArray(o)==true){//o也是数组,并且删除完子项,从所属数组中删除//if (arr) arr.splice(i,1);} } else if(s=='[Object Object]'){ proccessObject(o);//if(arriemsptyobj(o))arr。拼接(,1);} }附:javascript判断变量是否为空null,未定义,空数组,空对象,空对象,字符串是否为空或全由空白字符组成,数字是否为0,布尔是否为假的。由于目标没有长度用
Object.keys()适用于数组(IE8不支持此属性),对象返回可枚举的实例属性名组成的数组来判断是否为空。
利用逻辑判断中或(||)只要有一项为真则不再计算下一个表达式来实现不管传入的参数是何种类型。只要符合我对空的定义即返回真的。
函数is nothing(e){ var ISt=e===0 | | e===false | | e===null | | e===undefined | | object . keys(e)。长度===0 | | /^s*$/gim.test(e.tostring());return NOt;}
摘要
以上就是本文的全部内容。希望本文的内容对大家的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。