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 } ]