Javascript 删除仅空白的数组元素
由于使用array.splice会就地修改数组,如何从数组中删除所有纯空白元素而不引发错误?对于PHP,我们有preg_grep,但我不知道如何在JS中正确地实现这一点 由于上述原因,以下操作将不起作用:Javascript 删除仅空白的数组元素,javascript,Javascript,由于使用array.splice会就地修改数组,如何从数组中删除所有纯空白元素而不引发错误?对于PHP,我们有preg_grep,但我不知道如何在JS中正确地实现这一点 由于上述原因,以下操作将不起作用: for (var i=0, l=src.length; i<l; i++) { if (src[i].match(/^[\s\t]{2,}$/) !== null) src.splice(i, 1); } for(var i=0,l=src.length;i从数组中删除纯空
for (var i=0, l=src.length; i<l; i++) {
if (src[i].match(/^[\s\t]{2,}$/) !== null) src.splice(i, 1);
}
for(var i=0,l=src.length;i从数组中删除纯空白元素的更好方法
说明:
Array.prototype.filter
返回一个新数组,仅包含函数返回的元素true
(或truthy值)
/\S/
是一个与非空白字符匹配的正则表达式。/\S/.test(str)
返回str
是否具有非空白字符。您从数组中删除了一个缩短数组长度的项。循环继续,跳过了一些索引(那些下移到已删除索引中的索引),并最终尝试访问新范围之外的索引
请尝试以下方法:
var src=[“1”、“2”、“3”];
var i=src.长度;
而(i-)!/\S/.test(src[i])和&src.拼接(i,1);
console.log(src);
对于新一代(即ES2015):
另一种基于过滤器的变体-可重用(功能)
a=“删除空白”
它返回{a=“remove white spaces”}中所有字符的数组,其中没有“space”字符
您可以分别测试每个方法的输出:split()和join()。只需执行此示例即可
// this is you array
let array = ["foo","bar","",""]
// remove blanks in array
let array_new_value = array.join(" ").trim().split(' ');
// Print to know if really works
console.log(array_new_value);
我希望这对你有帮助!!
const words=['spray'、'limit'、'elite'、'exuberant'、''、''、'';
const result=words.filter(word=>word.trim().length>0);
log(结果);
这里是另一种方法
var data = JSON.parse(arrayval.split(/\s/).join(''));
你真的想在适当的位置更改数组,还是生成第二个经过过滤的数组?他在for
循环的初始化部分中有l=src.length
,而不是测试部分。没有在适当的位置修改数组吗?请解释。在4.5小时的睡眠中运行使我错过了一个简单的问题试图缓存数组长度,而我实际上不应该这样做。>\u<现在的问题是,哪种方法实现相同的目标最快或最省力?@tenub,答案将取决于实际中出现空白元素的频率(例如,很多、几乎从不等)。空白元素越多,过滤器
比拼接
速度越快。如果几乎没有空白元素,拼接
速度越快。@tenub,缓存长度并不是唯一的问题。当您从数组中删除一个项目时,它会将剩余的项目下移到索引中…因此,您将跳过下移的项目在当前索引中,i
。这不仅仅是问题所要求的。请不要只发布代码作为答案,还要解释代码的作用以及它如何解决问题。带有解释的答案通常更有帮助,质量更好,并且更有可能吸引你pvotes
function removeWhiteSpaceFromArray(array){
return array.filter((item) => item != ' ');
}
a.split(' ').join('').split('');
// this is you array
let array = ["foo","bar","",""]
// remove blanks in array
let array_new_value = array.join(" ").trim().split(' ');
// Print to know if really works
console.log(array_new_value);
var data = JSON.parse(arrayval.split(/\s/).join(''));
function clearSpace(arr){
for (var key in arr) {
if (arr[key] == "") {
arr.splice(key, 1)
clearSpace(arr)
}
}
}
var arr = ["","a","b","",""]
clearSpace(arr)
//I hope this helps you!!
//Vu Tien Luong - 3GTEL