Javascript 拼接函数未从数组中删除2个连续字符串

Javascript 拼接函数未从数组中删除2个连续字符串,javascript,arrays,Javascript,Arrays,这里我期待着[1,0,15]的输出。但它却给了我[1,“b”,0,15,“e”]。一个接一个存在的字符串似乎无法删除。我还试图在一个新的数组变量中获得更新的数组,但我不知道如何在这里做到这一点。非常感谢您的帮助。对于非字符串的所有内容,使用过滤器函数并返回真值要容易得多 function filter_list(l) { l.map((item,i,main) => { if(typeof item==="string") {return main.splice

这里我期待着
[1,0,15]
的输出。但它却给了我
[1,“b”,0,15,“e”]
。一个接一个存在的字符串似乎无法删除。我还试图在一个新的数组变量中获得更新的数组,但我不知道如何在这里做到这一点。非常感谢您的帮助。

对于非
字符串
的所有内容,使用
过滤器
函数并返回
真值
要容易得多

function filter_list(l) {
    l.map((item,i,main) => {
     if(typeof item==="string")
     {return main.splice(i,1);}
      else
      return item;
    });
  console.log(l);
}
filter_list([1,'a','b','c',0,15,'k','e']);

使用
filter
函数并返回
true
对于不是
字符串的所有内容都要容易得多

function filter_list(l) {
    l.map((item,i,main) => {
     if(typeof item==="string")
     {return main.splice(i,1);}
      else
      return item;
    });
  console.log(l);
}
filter_list([1,'a','b','c',0,15,'k','e']);

问题是,当您从原始数组拼接元素时,您在
map()
的迭代中遇到问题,因此,例如,当您删除索引为1的
a
时,索引为2的下一个元素是
c
,因为原始数组现在是这个
[1,“b”,“c”,0,15,“k”,“e”
,所以您跳过
b
。如果不删除元素,则可以看到映射与代码中的数字不匹配

功能过滤器列表(l){
l、 地图((项目,i,主要)=>{
if(typeof item==“string”)main[i]=null
})
返回l;
}

log(filter_list([1,'a','b','c',0,15,'k','e'])
问题是,当您从原始数组拼接元素时,您在
map()的迭代中遇到问题,因此,例如,当您删除索引为1的
a
时,现在索引为2的下一个元素是
c
,因为原始数组现在是
[1,“b”,“c”,0,15,“k”,“e”]
所以你跳过了
b
。如果不删除元素,则可以看到映射与代码中的数字不匹配

功能过滤器列表(l){
l、 地图((项目,i,主要)=>{
if(typeof item==“string”)main[i]=null
})
返回l;
}


console.log(筛选列表([1,'a','b','c',0,15,'k','e'))
是否要删除所有字符串?是的。但是有了map好奇,你为什么要使用
map
?我知道这是不道德的,但老实说,我只是想了解这是如何工作的。你想删除所有字符串吗?是的。但是有了map好奇,你为什么要使用
map
?我知道这是不道德的,但老实说,我只是想了解这个工作组是如何提到连续的,但他期望的输出是使用上述解决方案实现的。OP提到连续的,但是他所期望的输出是使用上述解决方案实现的。当它所处理的数组不断更改其长度时,map是如何工作的?它不
:)
。我明白了。假设我不接触主数组以及如何将其设置为另一个变量?我想我理解您的要求,因此数组是通过引用传递的,因此如果您的函数只返回原始修改的数组,并且您将该函数的值放入新变量中,其数组仍然与您在此处看到的相同,但是你可以创建数组的副本,有两种方法可以做到这一点,一种是使用
slice()
。另外请注意,当你使用map时,它会返回新数组。当它所处理的数组不断更改其长度时,map是如何工作的?它不会
:)
。我明白了。假设我不接触主数组以及如何将其设置为另一个变量?我想我理解您的要求,因此数组是通过引用传递的,因此如果您的函数只返回原始修改的数组,并且您将该函数的值放入新变量中,其数组仍然与您在此处看到的相同,但您可以创建数组的副本,有两种方法可以做到这一点:一种是使用
slice()
,另外请注意,当您使用map时,它会返回新的数组