DSL
DSL

Reputation: 169

why forEach() doesn't work in this object loop?

Why forEach doesn't work for the following? I tried it a few times and it always return "unexpected token".

// 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"

Upvotes: 1

Views: 692

Answers (2)

MarcoS
MarcoS

Reputation: 17711

You have to use brackets for function body:

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

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

Upvotes: 0

Code Maniac
Code Maniac

Reputation: 37755

Arrow functions can have either a "concise body" or the usual "block body".

In a concise body, only an expression is specified, which becomes the implicit return value. In a block body, you must use an explicit return statement

reference :- Arrow function body

Because this syntax is not correct.

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

You need to use {} here

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

Upvotes: 4

Related Questions