reduce方法创建新列表,为什么未定义
reduce method to create new list, why undefined?
这段代码给了我想要的答案:
var arrays = [[1, 2, 3], [4, 5], [6]];
var newArr = arrays.reduce(function(newArray, ele){
return newArray.concat(ele);
});
console.log(newArray) // -> [1,2,3,4,5,6];
但这段代码给了我一个"未定义"的数组:
var combine = function(list){
list.reduce(function(newArray,ele){
return newArray.concat(ele);
});
};
var newList = combine(arrays);
console.log(newList); // -> undefined
我想制作一个函数,将一个数组缩减为一个数组,但我无法将该函数保存为一个变量。我的代码出了什么问题?
您忘记返回列表
试试这个
var combine = function(list){
return list.reduce(function(newArray,ele){
return newArray.concat(ele);
});
};
var newList = combine(arrays);
console.log(newList);
var combine = function(list){
return list.reduce(function(newArray,ele){
return newArray.concat(ele);
});
};
注意退货。列表变成了一个单独的数组,但您需要从最外层的函数返回它。这就是为什么你得到了未定义的
这并不能直接回答您的问题,所以我正在标记这个社区wiki。
如果您希望组合数组,使用concat
和apply
将使其成为一行:
function combine(list) {
return Array.prototype.concat.apply([], list);
}
如果您使用JavaScript ES6,这也适用:
const combine = l => [].concat(...l)
相关文章:
- 为什么“;未定义的“;在JavaScript中结束循环
- 为什么grunt contrib connect的中间件选项的第三个参数是未定义的
- 为什么localStorage[“..”]未定义,而localStorage.getItem(“..”)为null
- 解析-为什么user.getSessionToken()返回未定义的结果
- 为什么这个函数调用会破坏程序并导致未定义的变量
- 为什么我会出现此错误"未捕获引用错误:未定义标题;
- 为什么JavaScript抛出'未捕获的ReferenceError:var未定义'定义var时
- 有许多关系创建记录 - 为什么未定义
- 为什么“未定义”==未定义是不正确的
- Javascript 函数.可变结果.为什么未定义或没有 如果 else 语句函数
- 为什么“未定义等于假”返回假
- JavaScript 对象 - 为什么未定义的属性
- 为什么未定义此对象的属性?Javascript
- NodeJS express会话(为什么未定义?)
- 为什么未定义var检查器
- 为什么未定义会被添加到我的字符串中
- 为什么未定义process.stdin
- 为什么未定义的var不被添加到窗口对象JavaScript
- reduce方法创建新列表,为什么未定义
- 为什么未定义此函数日志记录(JavaScript关闭)