2 回答

TA贡献1834条经验 获得超8个赞
为什么会产生结构不固定的情况?一般出现这种情况是数据结构设计不够合理。
当然也可能是因为数据来源比较分散,这种情况下比较好的做法是为每种来源写一个适配器转换数据结构——当然,如果几种数组结构的变化非常有规律,也可以用一个适配器来解决。

TA贡献1801条经验 获得超8个赞
let data = [
{
id: 1,
price1: 5,
price2: 4
},
{
id: 2,
price1: 5,
price2: 4
}
]
let data1 = [
{
id: 1,
price: {
price1: 6
}
},
{
id: 2,
price: {
price1: 6
}
}
]
let data2 = [
{
id: 1,
price: {
price1: {
price2: 7
}
}
},
{
id: 2,
price: {
price1: {
price2: 7
}
}
}
]
function test (data, price) {
let keys = price.split(',').filter(key => key)
keys.forEach(key => {
let list = key.split('.').filter(key => key)
let last = list.pop()
data.forEach(item => {
let tmpList = list.map(cur => cur)
let cur
let d = item
while(cur = tmpList.shift()) {
d = d[cur]
}
d[last] = '¥' + d[last]
})
})
}
test(data, 'price1,price2')
test(data1, 'price.price1')
test(data2, 'price.price1.price2')
console.log(data, data1, data2)
添加回答
举报