let x = {a:1,b:2,c:3}
let result = Object.keys(x).map((i) => {
console.log(i) ;
return ({i :x[i]});
})
为什么会得到
[{i: 1},{i: 2},{i: 3}]
?在控制台中,正在打印值i,即a,b,c。返回期间会发生什么?
答案 0 :(得分:3)
为什么map方法不返回对象数组?
可以。
退货期间会发生什么?
return ({i :x[i]});
行的意思是:
"i"
的属性(不是i
的 value ,而是实际的文字名称"i"
),其值来自x[i]
结果是一个对象数组,每个对象都有一个称为"i"
的属性。
如果您打算使用i
的 value ,则需要使用计算出的属性名称。也没有理由在对象文字周围使用()
:
return {[i]: x[i]};
// ^^^------------- computed property name
实时示例:
let x = {a:1,b:2,c:3};
let result = Object.keys(x).map((i) => {
console.log(i) ;
return {[i]: x[i]};
});
console.log(result);
.as-console-wrapper {
max-height: 100% !important;
}
这是在ES2015中引入的。在ES5及更早版本中,您必须先创建对象,然后再向其添加属性。