flask+vue学习:关于如何处理列表所需的数据

在实现table表格功能时,需要把后端的数据转为为前端需要的格式,才可以正常渲染

我当时是直接把后端的数据返回出去,然后在前端处理的。当然也可以在后端把数据处理好后,返回给前端直接用

 

从数据查询后的原始数据这样的

(('电话号码', '13140845519', '2022-01-10'), ('电话号码', '18136773435', '2022-01-10'), ('电话号码', '14592741294', '2022-01-10'), ('电话号码', '18926391929', '2022-01-10'))

大元组包含着小元组

如果直接把大元组数据返回给前端,会变成一个列表,如下

[["电话号码", "13140845519", "2022-01-10"], ["电话号码", "18136773435", "2022-01-10"], ["电话号码", "14592741294", "2022-01-10"], ["电话号码", "18926391929", "2022-01-10"], ["电话号码", "13214621532", "2022-01-10"]]

最终需要处理为这种格式

[{
    "date": "2022-01-10",
    "type": "电话号码",
    "value": "13140845519"
}, {
    "date": "2022-01-10",
    "type": "电话号码",
    "value": "18136773435"
}, {
    "date": "2022-01-10",
    "type": "电话号码",
    "value": "14592741294"
}, {
    "date": "2022-01-10",
    "type": "电话号码",
    "value": "18926391929"
}, {
    "date": "2022-01-10",
    "type": "电话号码",
    "value": "13214621532"
}]

1、在前端处理

首先,前端接收到的原始数据不是元组,而是列表,如下

[["电话号码", "13140845519", "2022-01-10"], ["电话号码", "18136773435", "2022-01-10"], ["电话号码", "14592741294", "2022-01-10"], ["电话号码", "18926391929", "2022-01-10"], ["电话号码", "13214621532", "2022-01-10"]]

要把它转换为所需格式的话,可以尝试使用js的map方法  Array.prototype.map()

https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/map

这样思路就很明显了,因为map的作用是:map() 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值

所以只需定义一个函数,它来把每个小list中的数据重新包装一下,包装为{key: value}的形式即可

代码如下

...... ...... ......
let data_list = res.data.records.map(function(array) {
          let rObj = {};
          rObj["date"] = array[2]
          rObj["type"] = array[0]
          rObj["value"] = array[1]
          return rObj;})
...... ...... ......

res.data.records 表示后端接口返回的原始数据,对它使用map方法;

在map方法内的函数中定义了一个对象rObj,它默认是个空对象,然后对象中塞入3个key,分别为date、type、value,它们的值分别取小list中对应的值;

最终就得到了所需的数据形式

2、在后端处理

先把元组转换为列表

old_data = (('电话号码', '13140845519', '2022-01-10'), ('电话号码', '18136773435', '2022-01-10'), ('电话号码', '14592741294', '2022-01-10'), ('电话号码', '18926391929', '2022-01-10'))

new_data = [list(item) for item in list(old_data)]
print(new_data)

结果如下

[['电话号码', '13140845519', '2022-01-10'], ['电话号码', '18136773435', '2022-01-10'], ['电话号码', '14592741294', '2022-01-10'], ['电话号码', '18926391929', '2022-01-10']]

定义一个函数,把列表转为字典

def list_obj(array):
    obj = {"date": array[2], "type": array[0], "value": array[1]}
    return obj

该函数可以把

['电话号码', '13140845519', '2022-01-10']

转换为

{'date': '2022-01-10', 'type': '电话号码', 'value': '13140845519'}

最后使用map方法把列表中的每个list转为dict

m = map(list_obj, new_data)
print(list(m))

结果如下

[{'date': '2022-01-10', 'type': '电话号码', 'value': '13140845519'}, {'date': '2022-01-10', 'type': '电话号码', 'value': '18136773435'}, {'date': '2022-01-10', 'type': '电话号码', 'value': '14592741294'}, {'date': '2022-01-10', 'type': '电话号码', 'value': '18926391929'}]

 

posted @ 2022-01-23 10:01  我是冰霜  阅读(257)  评论(0编辑  收藏  举报