[英]Removing an element from a javascript array causing issues
所以我对为什么此方法不起作用有些困惑。 我正在尝试删除数组中的所有空字符串,它一直在给我一个只是一个空字符串的数组。 有任何想法吗?
function splitNames(){
var names = document.getElementById("1").value.split("\n");
for(var i = 0; i<=names.length; i++){
if(names[i]==""){
names = names.splice(i, 1);
console.log(names);
}
}
console.log(names);
}
顺便说一下,字符串看起来像这样。
你好
你好
(删除这个)
你好
等等
(删除这个)
(删除这个)
等等
数组出现在此[“ Hi”,“ Hello”,“”,...]
也许最简单的方法是使用filter
功能并搜索真实值。 默认情况下,空字符串为false。
filter()方法创建一个新数组,其中所有元素都通过了由提供的函数实现的测试。
var strings = ["zebras", "trees", "forests", "", "hi", "wizards", "", "", "lizards"]; strings = strings.filter((e) => e); console.log(strings);
请务必注意,默认情况下,空字符串为false。 但是,仅包含空格字符的字符串为true。 在这种情况下,我的示例将不起作用,您将必须执行此操作
strings.filter((e) => e.trim());
https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
function splitNames(){ // var names = document.getElementById("1").value.split("\\n"); var names = "Hi\\nHello\\n \\nGoodBye".split("\\n"); var filteredNames = names.filter(function(item){ return item.trim() !== ""; });//filter return filteredNames; }//splitNames() console.log( splitNames() );
创建一个新数组,然后推送您所需的内容。
function splitNames(){
var names = document.getElementById("1").value.split("\n");
var newArr = [];
for(var i = 0; i<=names.length; i++){
if(names[i]){
newArr.push(names[i]);
}
}
return newArr.join('\n');
//console.log(names);
}
试试吧:
function splitNames(){
var names = document.getElementById("1").value.split("\n");
var newArr = names.filter(function(name){
return name!=="";
});
return newArr;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.