【发布时间】:2022-01-13 19:01:26
【问题描述】:
我正在尝试构建一个从数组中删除项目的函数。数组和项都是在我调用函数时使用推入的参数配置的。
但是它没有返回预期的 [1,2,4] 而是返回“尚未”我在 if 语句中构建的字符串以在失败时返回。
我可以在控制台日志中看到弹出变量 = 3,并且当前的 for 循环正确地循环了所有选项。那么为什么它不起作用呢?
const removeFromArray = function() {
let args = Array.from(arguments);
let popped = args.pop();
for (i = 0; i < args.length; i++) {
let current = args[i];
if (current === popped) {
console.log(args);
return args;
} else {
console.log("not yet");
}
}
};
removeFromArray([1, 2, 3, 4], 3);
【问题讨论】:
-
如果你正确缩进你的代码,你会帮自己一个忙。
-
为什么不直接使用 indexOf/splice?
-
为什么不直接在函数头声明参数呢?请注意,您作为第一个参数传递的数组位于
arguments[0]中。你不看那里。您似乎认为arguments有很多条目,包括您传递的数组的条目,但它只有两个条目:(嵌套)数组和值。 -
在您的示例中,args.length 将为 1,因为一旦您弹出 3,就只剩下一个参数(数组)。我认为您的意思是迭代 args[0],而不是 args .
-
因为你的 for 循环正在遍历参数中的第一个参数,这是一个数组
for (i = 0; i < [[1,2,3,4]].length; i++)所以比较是if ([1,2,3,4] ===3)
标签: javascript arrays loops