如何将嵌套数组转换为普通数组并更改类型?

时间:2018-12-13 11:31:30

标签: javascript angular typescript lodash

我具有以下数组结构:

[{Id: Number, Attributes: {Name: String, Age: String, Height: String}}]

我想将其转换为:

[{Id: Number, Name: String, Age: Number, Height: Number}]

还如何将"2018-12-12 09:19:40"转换为Date对象?在转换整个数组时。

如何执行此操作?是否使用lodash。

2 个答案:

答案 0 :(得分:4)

您可以将map与扩展语法...一起使用。

const data = [{Id: 'Number', Attributes: {Name: 'String', Age: 'String', Height: 'String'}}]
const res = data.map(({Attributes, ...rest}) => ({...rest, ...Attributes}))
console.log(res)

要转换数据类型,可以使用一些嵌套的解构。

const data = [{Id: 'Number', Attributes: {Name: 'String', Age: '20', Height: '123'}}]
const res = data.map(({Attributes: {Age, Height, ...attr}, ...rest}) => ({
  ...rest,
  ...attr,
  Age: +Age,
  Height: +Height
}))
console.log(res)

答案 1 :(得分:0)

如果要将对象转换为数组(更改类型),可以尝试Object.entries();。 在Es2017中,有一个在这种情况下有用的属性(Object.entries());

const cars = {"BMW": 3, "Tesla": 2, "Audi": 5}
const map = new Map(Object.entries(cars));
console.log(map);

希望这会有所帮助