javascript オブジェクトの配列で、オブジェクトの中に配列のindexを追加したい

var obj=[
 {
   name:"みかん"
 },
 {
   name:"りんご"
 },
 {
   name:"ばなな"
 }
]

これを

var obj=[
 {
   id:0
   name:"みかん"
 },
 {
   id:1
   name:"りんご"
 },
 {
   id:2
   name:"ばなな"
 }
]

としたい

console.log(JSON.stringify(obj.map((x,i) => (x.id=i) && x),null,' '))

ワンライナーで書けるが0の場合がおかしくなる。

[
 0,
 {
  "name": "りんご",
  "id": 1
 },
 {
  "name": "ばなな",
  "id": 2
 }
]

代入文で0が代入されると条件式がfalseになるから

console.log(JSON.stringify(obj.map((x,i) => (x.id=i)|1 && x),null,' '))


なので代入式の後に|(or)1(=true)を付けて強制的にtrueにする

[
 {
  "name": "みかん",
  "id": 0
 },
 {
  "name": "りんご",
  "id": 1
 },
 {
  "name": "ばなな",
  "id": 2
 }
]