如何遍历对象并更改数据集中的 属性 键
how to loop through objects and change the property keys in a data set
我有一组数据需要根据我想要的特定格式重新格式化。
以下是我收到的数据格式。
const recieved = [
{
"name": "1PM Industries Inc ",
"series": [
{
"value": 0.0001,
"name": "2019-08-30"
},
{
"value": 0,
"name": "2019-08-28"
}
]
}
]
我需要做的是遍历所有对象 属性 键 "name"
、"series"
、"value"
并将它们更改为 "id"
、"data"
, "x"
和 "y"
分别。
以下是我要更改上述数据集的数据格式。
我需要 "name"
替换为 "x"
并且 "value"
应该替换为 "y"
const columns = [
{
"id": "japan",
"data": [
{
"x": "plane",
"y": 45
},
{
"x": "helicopter",
"y": 253
}
]
}
]
我发现我们可以通过 Object.keys
访问对象的 属性 个键
function formatData(columns) {
columns.map(col => {
})
}
在数据格式化方面,我发现自己处于非常困难的境地。希望有人能帮我解决这个问题。谢谢
这应该有效:
received.map(r => ({
id: r.name,
data: r.series.map(s => ({
x: s.name,
y: s.value
}))
}));
映射每个接收到的对象,return一个新对象。新对象的 id
是接收对象的 name
。新对象的 data
是旧对象 series
的映射,将 name
转换为 x
,将 value
转换为 y
。
您可以重命名属性 (Assigning to new variable names) 并生成新对象。
const
recieved = [{ name: "1PM Industries Inc ", series: [{ value: 0.0001, name: "2019-08-30" }, { value: 0, name: "2019-08-28" }] }],
result = recieved.map(({ name: id, series }) => ({
id,
data: series.map(({ value: x, name: y }) => ({ x, y }))
}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以将 for..in 循环与 hasOwnProperty() 方法结合使用
使用递归获得更好的脚本
您可以使用 map 方法。
const recieved = [
{
"name": "1PM Industries Inc ",
"series": [
{
"value": 0.0001,
"name": "2019-08-30"
},
{
"value": 0,
"name": "2019-08-28"
}
]
}
]
let output = recieved.map(o=>{
let data = o.series.map((i)=>{ return {x: i.value, y: i.name}});
return {id: o.name, data}
});
console.log(output)
我有一组数据需要根据我想要的特定格式重新格式化。 以下是我收到的数据格式。
const recieved = [
{
"name": "1PM Industries Inc ",
"series": [
{
"value": 0.0001,
"name": "2019-08-30"
},
{
"value": 0,
"name": "2019-08-28"
}
]
}
]
我需要做的是遍历所有对象 属性 键 "name"
、"series"
、"value"
并将它们更改为 "id"
、"data"
, "x"
和 "y"
分别。
以下是我要更改上述数据集的数据格式。
我需要 "name"
替换为 "x"
并且 "value"
应该替换为 "y"
const columns = [
{
"id": "japan",
"data": [
{
"x": "plane",
"y": 45
},
{
"x": "helicopter",
"y": 253
}
]
}
]
我发现我们可以通过 Object.keys
function formatData(columns) {
columns.map(col => {
})
}
在数据格式化方面,我发现自己处于非常困难的境地。希望有人能帮我解决这个问题。谢谢
这应该有效:
received.map(r => ({
id: r.name,
data: r.series.map(s => ({
x: s.name,
y: s.value
}))
}));
映射每个接收到的对象,return一个新对象。新对象的 id
是接收对象的 name
。新对象的 data
是旧对象 series
的映射,将 name
转换为 x
,将 value
转换为 y
。
您可以重命名属性 (Assigning to new variable names) 并生成新对象。
const
recieved = [{ name: "1PM Industries Inc ", series: [{ value: 0.0001, name: "2019-08-30" }, { value: 0, name: "2019-08-28" }] }],
result = recieved.map(({ name: id, series }) => ({
id,
data: series.map(({ value: x, name: y }) => ({ x, y }))
}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
您可以将 for..in 循环与 hasOwnProperty() 方法结合使用
使用递归获得更好的脚本
您可以使用 map 方法。
const recieved = [
{
"name": "1PM Industries Inc ",
"series": [
{
"value": 0.0001,
"name": "2019-08-30"
},
{
"value": 0,
"name": "2019-08-28"
}
]
}
]
let output = recieved.map(o=>{
let data = o.series.map((i)=>{ return {x: i.value, y: i.name}});
return {id: o.name, data}
});
console.log(output)