javascript - 在lodash的reduce函数中遇到Cannot read property 'push' of undefined

标签 javascript arrays object ecmascript-6 lodash

我是使用reduce函数和lodash库的初学者,我试图在这里将数组称为结果,但我遇到了如下情况。

          let result: Array<number> = [];
            result.push(1); // [1]

            _.reduce(array, function(result, el, idx) {
                if(el.node === array[child_index].parent) {
                    result.push(parseInt(idx)); // [2]
                    return result; 
                }
            }, result);

请问为什么我能够将值推送到[1],而无法将值推送到[2],实际上,我在[2]中遇到了这个错误消息。 类型错误:无法读取未定义的属性“push”, 我正在使用 lodash 来减少功能。我也尝试了 concat 它返回了相同的错误。如果有人遇到同样的问题,我可以得到一些建议吗?

最佳答案

如果 if 语句不为 true,您需要返回 result 作为默认操作,以防止出现错误:

_.reduce(array, function(result, el, idx) {
  if (el.node === array[child_index].parent) {
    result.push(parseInt(idx));
  }
  return result;
}, result);

关于javascript - 在lodash的reduce函数中遇到Cannot read property 'push' of undefined,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57437529/

相关文章:

javascript - vscode 扩展从当前文件夹获取文件

javascript - selenium webdriver 管理器更新 - npm

c++ - 如何在 C++ 中将结构数据存储在数组中?

不同文件中枚举和数组的一致性检查

c - 这些声明之间的技术差异是什么?

javascript - 如何使用键、值迭代 ng-repeat 以单独显示值

javascript - Mongodb duplicate key error collection dup key : null

Java变量表示的对象类型

java - 更改 NetBeans 默认 JFrame 主函数有什么区别吗?

javascript - 是否可以构造一个对象,以便在请求其键时抛出错误?