gpt4 book ai didi

javascript - 为什么这个值在 reduce 范围内未定义,但在 for 循环中定义? (javascript)

转载 作者:行者123 更新时间:2023-11-29 21:09:27 26 4
gpt4 key购买 nike

我正在尝试编写一个函数来查找一组数组中的唯一值...

function uniteUnique(arr) {
var args = Array.prototype.slice.call(arguments);
var result = [];

for (var i=0; i<args.length; i++){
console.log(args[i]); // as expected this evaluates to [1, 3, 2]
// [5, 2, 1, 4]
// [2, 1]

}

args.reduce(function(arg){
console.log(arg + ' is the arg'); //for some reason arg is undefined
arg.map(function(val){
if (result.indexOf(val) < 0){
result.push(val);

}
return result;
});
}, result);
}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

为什么上面的代码在 reduce 中给出了 undefined 而在 for 循环中给出了一个有效值? reduce 函数不只是隐式循环值(即生成 arg[0]、arg[1]、 等吗?)

编辑:这是我得到的解决方案...

function uniteUnique(arr) {
var args = Array.prototype.slice.call(arguments);
var result = [];

args.reduce(function(acc, arg){
console.log(arg + ' is the arg');
arg.map(function(val){
if (result.indexOf(val) < 0){

result.push(val);
console.log(result + " is the current result");
}
return result;
});
}, result);
return result;
}

最佳答案

Mozilla Developer Network documentation可以给你很好的帮助。 reduce 的回调函数应该接收两个参数,累加器和你正在迭代的数组的当前值,所以我相信它应该看起来像这样:

function uniteUnique(arr) {
var args = Array.prototype.slice.call(arguments);
var result = [];
var helper;
for (var i=0; i<args.length; i++){
console.log(args[i]);
}

args.reduce(function(acc, arg){
console.log(arg + ' is the arg');
helper = arg.map(function(val){
if (result.indexOf(val) < 0){
result.push(val);
}
return result;
});
return acc + helper;
}, result);
}

关于javascript - 为什么这个值在 reduce 范围内未定义,但在 for 循环中定义? (javascript),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42424217/

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