使用 javascript map() 返回未定义元素的数组

San*_*ejű 3 javascript json object

抱歉,这可能很微不足道,但我仍然找不到解决方案:

我有一个包含以下元素的对象:

 0: "A"
 1: "B"
 2: "C"
Run Code Online (Sandbox Code Playgroud)

我想使用 map() 函数将其转换为如下所示:

0: {name: "A"}
1: {name: "B"}
2: {name: "C"}
Run Code Online (Sandbox Code Playgroud)

如果我使用这个:

this.xxx = this.operations.map(obj =>  obj.name);
console.log(this.xxx);
Run Code Online (Sandbox Code Playgroud)

或这个:

this.xxx = this.operations.map(obj => {name:obj} );
 console.log(this.xxx);
Run Code Online (Sandbox Code Playgroud)

xxx 的元素未定义。

spe*_*der 10

当你写的时候

someArray.map(obj => {
    //this is a code block, not an object definition
} )
Run Code Online (Sandbox Code Playgroud)

大括号括起代码块,而不是对象文字。

如果您希望箭头函数返回一个对象,JS 要求您用括号将对象字面量括起来,以便正确解析您的意图。

像这样:

this.operations.map(obj => ({name: obj}) )
Run Code Online (Sandbox Code Playgroud)

将修复您的映射。

或者,如果您想做更复杂的事情,请使用代码块并返回值:

this.operations.map(obj => {
    // do some calculations
    return {name: obj};
})
Run Code Online (Sandbox Code Playgroud)