【问题标题】:Cannot read property 'push' of undefined on an Array of objects (Typeof shows object) [closed]无法读取对象数组上未定义的属性“推送”(Typeof 显示对象)[关闭]
【发布时间】:2019-04-16 22:03:03
【问题描述】:

这是在此帖子澄清后重新发布:Cannot read property 'push' of undefined on an Array of objects

但基本上我所拥有的是下面

let foo = {
   "a" : [],
   "b" : [],
   "c" : []
}

let fee = {
   {
     'name':'apple'
   },
   { 
     'name':'banana'
   }
}

let fum = {
   'apple':'a',
   'banana':'b'
}


for(let index in fee){
   let current = fee[index];
   foo[fum[current.name]].push(current);
}

这告诉我我不能推送到未定义。 当我记录typeof foo[fum[current.name]] 时,我得到一个“对象”而不是预期的数组。

【问题讨论】:

  • 您应该更新/编辑您的原始帖子。 typeof 永远不会返回“Array”,数组是一个对象。但错误意味着fum[current.name] 返回的属性名称在foo 中不存在。
  • 您的代码没有运行。费用申报有误。如果您将 fee 声明为像 let fee = [{'name':'apple'}, {'name':'banana'}]; 这样的数组,它似乎可以工作。

标签: javascript arrays reactjs object ecmascript-6


【解决方案1】:

您的代码不起作用,因为fee 需要是一个数组:

let fee = [
   {
     'name':'apple'
   },
   { 
     'name':'banana'
   }
];

现在您的代码应该可以工作了。

【讨论】:

    【解决方案2】:

    fee 必须是一个数组。试试这个

    let foo = {
       "a" : [],
       "b" : [],
       "c" : []
    }
    
    let fee = [
       {
         'name':'apple'
       },
       { 
         'name':'banana'
       }
    ]
    
    let fum = {
       'apple':'a',
       'banana':'b'
    }
    
    
    for(let index in fee){
       let current = fee[index];
       foo[fum[current.name]].push(current);
    }
    

    【讨论】:

    • 抱歉打错了,该代码实际上是我目前所拥有的!还是不行:(
    • 它对我有用!你有什么问题?
    • 哦,我在对象键值中犯了一个愚蠢的错误! (即'apples'而不是'apple')愚蠢的我,我也被困了一段时间......无论如何都非常感谢! (:
    猜你喜欢
    • 2017-10-16
    • 1970-01-01
    • 2021-04-30
    • 2018-07-20
    • 1970-01-01
    • 2021-11-02
    • 2019-03-10
    • 2017-01-28
    • 2021-03-06
    相关资源
    最近更新 更多