[编辑和更新我的答案。其他答案似乎与我的几乎重叠,但是,我想我以前有另一个答案并提供了一个替代方案]。
我针对这个问题提出了 3 个解决方案,基于:
- Object.keys
- Object.values
- Object.entries
Objects.keys() 解决方案:
let keys = Object.keys(dataObject); // ["object1", "object2", "object3" ];
let keysToResult = keys.map( e => dataObject[e] ); // [{"id":1,"name":"Fred"},{"id":2,"name":"Wilma"},{"id":3,"name":"Pebbles"}]
Object.values 解决方案:
let values = Object.values(dataObject); // [{"id":1,"name":"Fred"},{"id":2,"name":"Wilma"},{"id":3,"name":"Pebbles"}]
Object.entries 解决方案:
let entries = Object.entries(dataObject); // [["object1",{"id":1,"name":"Fred"}],["object2",{"id":2,"name":Wilma"}],["object3",{"id":3,"name":"Pebbles"}]]
let entriesToResult = entries.map( ([k,v]) => v ); [{"id":1,"name":"Fred"},{"id":2,"name":"Wilma"},{"id":3,"name":"Pebbles"}]
这三种解决方案各有特色。
Object.keys() 返回一个结果不足的数组。因此,我们使用 Array.prototype.map 来填充数组中的每个值,以接近我们想要的。一般来说,我们可以将 Object.keys() 与 map 相结合,作为一种机制来自定义我们想要的结果列表。
Object.values() 很有趣,因为它丢弃了键,只返回结果。事实上,对于这个问题,这是完美的,因为答案不需要进一步处理。
Object.entries() 返回比我们想要的更多,因为它返回键和值。我们需要使用地图来定制我们的结果。事实上,我们需要把多余的信息删掉。
Object.keys()、Object.values() 和 Object.entries() 都是非常有用的函数,这就是为什么我想展示所有 3 个函数来解决这个问题。根据您的具体用例,您可能会找到一种更适合解决您的问题。