问题重现:
后台返回的数据如下,但是实际的效果这样的数据是做不到的。只能改成json格式
解决方案:
通过npm,下载himalaya。就对应的数据,转成树形结构数据,然后在通过递归遍历,转成自己想要的数据。
himalaya这个库不会使用,可以去npm上面看对应的使用方法;
转成下方的树形结构。
遍历代码如下:
// 递归获取数据
export function loopData(arrays, head, obj) {
if (arrays && arrays.length > 0) {
arrays.map((item, index) => {
if (item.children && item.children.length > 0 && item.tagName != 'thead') {
if (item.tagName == 'tr') {
let myObj = {};
item.children.map((item, index) => {
myObj[head[index]] = item.children[0].content
});
obj.push(myObj)
} else {
loopData(item.children, head, obj);
}
} else {
if (item.type != 'element') {
console.log(item)
}
}
});
}
}
//在vue文件中使用:
async HtmltoJson() {
let holdData = await getCompanyEvents(this.prod_code);
if (holdData.status == "200" && holdData.data.message == "OK") {
const data = holdData.data.data;
const html = data["高管持股变动"];
var arrays = parse(html);
var head = [
"ChangeDate",
"Changer",
"CompanyRelations",
"ChanginShare",
"AveragePrice",
"RemainShares",
"ChangePath",
];
loopData(arrays, head, this.HoldInfo);
}
},
最后效果成果: