抱歉,这可能很琐碎,但我仍然无法找到解决方案:
我有一个包含以下元素的对象:
0: "A"
1: "B"
2: "C"
我想使用map()函数将其转换为如下内容:
0: {name: "A"}
1: {name: "B"}
2: {name: "C"}
如果我使用这个:
this.xxx = this.operations.map(obj => obj.name);
console.log(this.xxx);
或者这个:
this.xxx = this.operations.map(obj => {name:obj} );
console.log(this.xxx);
xxx的元素未定义。
7条答案
按热度按时间vom3gejh1#
由于对象类似于数组,因此可以添加
length
属性,使其成为array like
。然后可以使用Array.from将转换函数作为第二个参数将其转换为真实的数组:eagi6jfj2#
你不能使用
.map()
来生成一个对象,因为它总是返回一个数组。你最好的办法是获取对象中的条目,然后对它使用.reduce()
,如下所示:kr98yfug3#
当你写的时候
花括号括起的是代码块,而不是对象文字。
如果你想要一个箭头函数返回一个对象,JS要求你用括号 Package 对象字面量,以便正确地解析你的意图。
因此:
将修复您的Map。
或者,如果你想做一些更复杂的事情,使用代码块并返回值:
new9mtju4#
如果我明白你想把它们变成对象?这就是你可以做的:
wvyml7n55#
将对象值Map到对象数组,然后使用
Object.assign
将其转换为对象vd8tlhqk6#
首先,如果你有对象,不确定你如何使用map函数,因为它是数组原型函数。https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map,但是如果它是数组,你应该试试这个:
您缺少了 Package 括号,https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions#Advanced_syntax
但如果它真的是一个对象,那么这应该可以工作(不确定性能):
oknrviil7#
试试这个,用Object.entries