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

时间:2018-03-12 16:05:09

标签: javascript typescript ecmascript-6

album.songs = [1234545,43524];

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

输出:未定义

我的问题是,我想在“歌曲”中替换我的项目。具有特定对象的数组。它适用于字符串或数字,但不适用于对象。

3 个答案:

答案 0 :(得分:6)

一些注意事项:

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

  2. 那里不需要Object.assign,只需直接创建对象,所以:

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

    或简洁形式:

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

    请注意,由于我们要返回使用对象初始值设定项创建的对象,并且初始值设定项中的{将启动一个函数体,我们将在()中包含要返回的值。< / p>

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

    const replaced = album.songs.map(_id => ({ _id }) );
    
  4. 直播示例:

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

答案 1 :(得分:0)

您没有分配给函数参数,因为它仅存在于该函数中,并且它不像您正在取消引用指针。

只需返回对象即可。如果不使用花括号来表示正文,则箭头函数会自动返回其表达式。

var songs = [1234545, 43524];

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

console.log(replaced);

答案 2 :(得分:0)

Map 函数希望您为每次迭代返回一个值:

&#13;
&#13;
console.log([1, 2].map(n => n * 2))
&#13;
&#13;
&#13;

在你的情况下,它应该是:

&#13;
&#13;
album.songs.map( e => ({ _id : e }))
&#13;
&#13;
&#13;