【问题标题】:Getting error on TypeError: Cannot read property 'push' of undefined在 TypeError 上出现错误:无法读取未定义的属性“推送”
【发布时间】:2021-08-02 16:41:26
【问题描述】:

我收到此错误。请注意splits 是一个包含值的数组。

TypeError: 无法读取未定义的属性“push”

var products = splits.reduce((accu, curr) => {
  if (accu[curr[0]] === null) {
    accu[curr[0]] = [];
  }
  accu[curr[0]].push(curr[1]);
  return accu;
}, {});

var result = Object.keys(products).map(key => `${key} - ${products[key].join(', ')}.`).join(' ');

感谢任何人帮助修复上述代码

【问题讨论】:

    标签: javascript angular


    【解决方案1】:

    null === undefined 在 JavaScript 中是 false

    console.log(null === undefined);

    所以条件accu[curr[0]] === null 将返回false,尽管accu[curr[0]]undefined。相反,您可以使用否定 (!) 来检查变量是否已定义

    console.log(!null);
    console.log(!undefined);

    试试下面的

    let products = splits.reduce((accu, curr) => {
      if (!accu[curr[0]]) {
        accu[curr[0]] = [];
      }
      accu[curr[0]].push(curr[1]);
      return accu;
    }, {});
    

    【讨论】:

    • 已更改为 (!!accu[curr[0]]) 但仍然出现相同的错误。错误在代码“push”的行中
    • 必须是(!accu[curr[0]])。我已经调整了答案。请看看它现在是否有效。
    猜你喜欢
    • 2021-07-23
    • 2017-08-12
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 2017-11-23
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多