背景
有时涉及字符和数组的转换工作,利用逗号分割和合并数组。但是遇到某个字符为空时出现
str=",aa,dd",这样转化出来的数组就是["","",“aa”,"",“dd”]里面包含空字符。
问题
[""]的长度是1,[]长度是0,这样会影响到对数组是否为空的判断。用vue等框架渲染会有问题。
解决方案
arr=["",null,undefined,“0”]
1 去除空字符串
方式1:
arr = arr.filter(m=>m});
注:lambda表达式,m代表数组元素。等同下面方式2
方式2:
arr = arr.filter(function(e){return e});
原理
array.filter(Boolean)括号内是返回值,如果为真就返回元素,为false就剔除元素。
由于“”空字符串==false,所以空字符串被剔除。
[1, false, "", undefined, 2].filter(Boolean); // [1, 2]
思考?
如何剔除换行符?
arr = arr.filter(e=> e.replace(/(\r\n|\n|\r)/gm,""));