album.songs = [1234545,43524];
const replaced = album.songs.map( e => { e = Object.assign({}, { _id : 123 }) } );
输出:未定义
我的问题是,我想在“歌曲”中替换我的项目。具有特定对象的数组。它适用于字符串或数字,但不适用于对象。
答案 0 :(得分:6)
一些注意事项:
使用map
,您返回您希望新数组包含的对象。分配给参数e
只会更改参数的值,该值不会保留在任何位置。
那里不需要Object.assign
,只需直接创建对象,所以:
const replaced = album.songs.map(e => { return { _id : e }; } );
或简洁形式:
const replaced = album.songs.map(e => ({ _id : e }) );
请注意,由于我们要返回使用对象初始值设定项创建的对象,并且初始值设定项中的{
将启动一个函数体,我们将在()
中包含要返回的值。< / p>
如果我们将参数名称更改为_id
,我们甚至可以利用速记属性表示法:
const replaced = album.songs.map(_id => ({ _id }) );
直播示例:
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 函数希望您为每次迭代返回一个值:
console.log([1, 2].map(n => n * 2))
&#13;
在你的情况下,它应该是:
album.songs.map( e => ({ _id : e }))
&#13;