传播操作符将对象转换为数组

Tur*_*ets 11 javascript arrays object ecmascript-6 spread-syntax

我正在尝试转换这样的数据结构:

data = { 
  0:{A:a}, 
  1:{B:b}, 
  2:{C:c}, 
}
Run Code Online (Sandbox Code Playgroud)

进入这样的结构:

[
 {0:{A:a}},
 {1:{B:b}}, 
 {2:{C:c}},
]
Run Code Online (Sandbox Code Playgroud)

像这样使用spread运算符:[...data]返回任何空数组.

我也试过了 [{...data}]

有没有办法使用扩展运算符来获得所需的结果?另外,为什么这种方法不起作用?

mho*_*ges 8

它不起作用,因为根据MDN文档

"ECMAScript提案的Rest/Spread属性(第3阶段)将扩展属性添加到对象文字.它将自己的可枚举属性从提供的对象复制到新对象上."

Object.keys().map()尽管如此,你可以很容易地做你想做的事情.

var data = { 
  0:{A:"a"}, 
  1:{B:"b"}, 
  2:{C:"c"}, 
}

var result = Object.keys(data).map(function (key) {
   return { [key]: data[key] };
});
console.log(result);
Run Code Online (Sandbox Code Playgroud)


Ori*_*ori 5

您可以使用Object.entries获取[key,value]对,并使用计算属性名称将它们映射到对象数组:

const data = { 
  0:{A: 'a'}, 
  1:{B: 'b'}, 
  2:{C: 'c'}
};

const result = Object.entries(data).map(([key, value]) => ({ [key]: value }));

console.log(result);
Run Code Online (Sandbox Code Playgroud)