[英]How can I replace an item in an array with an object?
album.songs = [1234545,43524];
const replaced = album.songs.map( e => { e = Object.assign({}, { _id : 123 }) } );
輸出:未定義
我的問題是我想用特定對象替換“歌曲”數組中的項目。 它適用於字符串或數字,但不適用於對象。
一些注意事項:
使用map
,可以返回要包含新數組的對象。 分配給參數e
只會更改參數的值,該值不會保留在任何地方。
在那里不需要Object.assign
,只需直接創建對象,所以:
const replaced = album.songs.map(e => { return { _id : e }; } );
或簡潔的形式:
const replaced = album.songs.map(e => ({ _id : e }) );
請注意,由於我們要返回使用對象初始化器創建的對象,並且初始化器中的{
將啟動函數主體,因此我們將要返回的值包裝在()
。
如果將參數名稱更改為_id
我們甚至可以利用速記屬性表示法:
const replaced = album.songs.map(_id => ({ _id }) );
現場示例:
const album = {songs: [1234545, 43524]}; const replaced = album.songs.map(_id => ({ _id }) ); console.log(replaced);
您不必分配給函數參數,因為它僅存在於該函數中,並且不像您要取消引用指針。
只需返回對象。 如果您不使用花括號來表示主體,則箭頭函數會自動返回其表達式。
var songs = [1234545, 43524]; const replaced = songs.map(e => ({_id: e})); console.log(replaced);
Map函數希望您為每次迭代返回一個值:
console.log([1, 2].map(n => n * 2))
在您的情況下,應為:
album.songs.map( e => ({ _id : e }))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.