如何用对象替换数组中的项?

Hac*_*ack 0 javascript typescript ecmascript-6

album.songs = [1234545,43524];

const replaced = album.songs.map( e => { e = Object.assign({}, { _id : 123 }) } );
Run Code Online (Sandbox Code Playgroud)

输出:未定义

我的问题是我想用'特定对象'替换'songs'数组中的项目.它适用于字符串或数字,但不适用于对象.

T.J*_*der 6

一些说明:

  1. 使用map,返回要包含新数组的对象.分配给参数e只会更改参数的值,该值不会保留在任何位置.

  2. 没有必要Object.assign,只需直接创建对象,所以:

    const replaced = album.songs.map(e => { return { _id : e }; } );
    
    Run Code Online (Sandbox Code Playgroud)

    或简洁的形式:

    const replaced = album.songs.map(e => ({ _id : e }) );
    
    Run Code Online (Sandbox Code Playgroud)

    请注意,由于我们要返回使用对象初始值设定项创建的对象,并且初始化程序中的对象{将启动函数体,因此我们将包含要返回的值().

  3. 如果我们将参数的名称更改为_id:我们甚至可以利用速记属性表示法:

    const replaced = album.songs.map(_id => ({ _id }) );
    
    Run Code Online (Sandbox Code Playgroud)

实例:

const album = {songs: [1234545, 43524]};
const replaced = album.songs.map(_id => ({ _id }) );
console.log(replaced);
Run Code Online (Sandbox Code Playgroud)