gpt4 book ai didi

Javascript 哈希器嵌套函数

转载 作者:行者123 更新时间:2023-12-03 11:36:17 25 4
gpt4 key购买 nike

我正在尝试创建一个函数来删除长度不超过 4 个字符的数组值。由于某种原因,它不起作用。我认为这可能与返回语句有关,但我不确定,我需要帮助。这是该函数的代码:(请不要建议使哈希器更好的方法,我只需要该函数的帮助)

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;
}
}
}

最佳答案

五件事:

  • 是的,返回应该发生在循环之后,而不是在第一个找到的要删除的项目之后。
  • .splice() 采用第一个参数的索引,而不是元素的索引。传递 i 而不是 seq[i]
  • splice(…, 1) 确实会将您迭代的数组的长度减少一。您需要处理这一点并减少计数器,以便再次查看 i 索引,下一次迭代时下一个元素将位于该索引。
  • 无需将字符串拆分为单个字符数组并获取其长度,只需直接获取字符串的长度即可。
  • 您的函数会删除所有长度不是 4 的倍数的字符串,也不会删除所有长度不等于 4 个字符的字符串。不确定这是否是有意为之。

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;
});
}

关于Javascript 哈希器嵌套函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26497205/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com