我正在努力将一组数据格式化为一个数组以用于表格。我有一个这样的数据集
data = [{
hello: 'world',
children: [{
foo: 'bar'
}]
}]
我希望将这些数据放入一个数组中,同时使用 parent: true
bool 标记所有父节点。所以我可以把它们全部放到一个表中,但在 parent 和 child 之间仍然有一个区分因素。我知道我可以为表循环两次,但我这样做是为了可重用性目的。我在下面有一个工作代码块。
formattedData (data) {
const formattedData = []
data.map(dataPoint => {
let obj = dataPoint
obj['parent'] = true
formattedData.push(dataPoint)
if (dataPoint.children) {
dataPoint.children.map(c => {
formattedData.push(c)
})
}
})
return formattedData
}
结果数据如下所示:
data = [{
hello: 'world',
parent: true
}, {
foo: 'bar'
}]
只是检查是否有更好/更有效/更漂亮的方法来执行此操作(或者我这样做的方式是否应该这样做)。提前致谢!
最佳答案
如果您打算使用
let obj = dataPoint
复制对象,以免改变传递给函数的参数,并且该对象是一个简单的Object
,那么您可以使用对象传播来复制它并添加属性Array.prototype.flatMap
现在已经存在(并且可以像其他东西一样向后兼容垫片)如果不使用
this
,为什么它是一个类方法?
const getFormattedData = data =>
data.flatMap(dataPoint => [
{...dataPoint, parent: true},
...dataPoint.children || [],
])
或者,如果您还想删除 children
属性:
const getFormattedData = data =>
data.flatMap(({children, ...dataPoint}) => [
{...dataPoint, parent: true},
...children || [],
])
关于Javascript - 展平对象的嵌套数组。弄得漂亮吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53735336/