【问题标题】:why forEach() doesn't work in this object loop?为什么 forEach() 在这个对象循环中不起作用?
【发布时间】:2019-06-28 11:04:56
【问题描述】:

为什么 forEach 不适用于以下情况?我试了几次,它总是返回“意外令牌”。

// for loop
for(item in items){
        if (items[item].id===idNum){
            console.log(items[item]);
        }
    }

// the for loop works. 

// forEach()

items.forEach(item=>if(item.id===idNum){console.log(item)})
// this returned error message "unexpected token"

【问题讨论】:

  • 因为你不能为每个对象。这是 Array.prototype 的一部分。你可以Object.keys(items).forEach( 代替。
  • items 长什么样子?
  • 错误来自无效的箭头函数结构。
  • item=>if(item.id===idNum){console.log(item)} that if 不是表达式,你不能在那里使用它。它应该类似于(item) => {if ... }

标签: javascript object foreach


【解决方案1】:

函数体必须使用方括号:

let items = [ {id:1}, {id:2} ];
let idNum = 2;

items.forEach(item => {
  if (item.id === idNum) { console.log(item) }
})

【讨论】:

    【解决方案2】:

    箭头函数可以有一个“简洁的主体”或通常的“块” 身体”。

    在简洁的正文中,只指定了一个表达式,它成为 隐式返回值。在块体中,您必须使用显式 返回声明

    参考:-Arrow function body

    因为这个语法不正确。

    items.forEach(item=>if(item.id===idNum){console.log(item)})
    

    你需要在这里使用{}

    items.forEach(item=>{
    if(item.id===idNum){console.log(item)}
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多