簡體   English   中英

如何用對象替換數組中的項目?

[英]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 }) } );

輸出:未定義

我的問題是我想用特定對象替換“歌曲”數組中的項目。 它適用於字符串或數字,但不適用於對象。

一些注意事項:

  1. 使用map ,可以返回要包含新數組的對象。 分配給參數e只會更改參數的值,該值不會保留在任何地方。

  2. 在那里不需要Object.assign ,只需直接創建對象,所以:

     const replaced = album.songs.map(e => { return { _id : e }; } ); 

    或簡潔的形式:

     const replaced = album.songs.map(e => ({ _id : e }) ); 

    請注意,由於我們要返回使用對象初始化器創建的對象,並且初始化器中的{將啟動函數主體,因此我們將要返回的值包裝在()

  3. 如果將參數名稱更改為_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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM