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时,它会返回新的数组