我正在尝试创建一个能够修剪不是4个字符长的数组值的函数。出于某种原因,它不起作用。我认为它可能与return语句有关,但我不确定,我需要帮助。以下是该功能的代码:(请不要建议让哈希更好的方法,我只需要帮助这个功能)
function cutit(seq){
for(var i=0;i<seq.length;i++){
var temparr=seq[i].split("");
if(temparr.length % 4 !== 0){
seq.splice(seq[i],1);
return seq;
}
}
}
答案 0 :(得分:1)
五件事:
return
应该在循环之后发生,而不是在第一个要删除的项目之后。.splice()
获取第一个参数的索引,而不是元素。通过i
代替seq[i]
。splice(…, 1)
确实会减少您重复一次的数组的长度。你需要处理这个并减少你的计数器,以便再次查看i
索引,下一个元素将在下一次迭代中的位置。
function cutit(seq) {
for (var i=0; i<seq.length; i++) {
if (seq[i].length !== 4) {
seq.splice(i--, 1);
}
}
return seq;
}
另外,请注意,改变数组很少是一个好主意(特别是像这样的低效方式,有多个拼接)。返回一个新数组要容易得多,你可以使用高阶filter
Array method:
function cutit(seq) {
return seq.filter(function(str) {
return str.length === 4;
});
}