<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
<body>
<script>
let options = [
{
value: "330000",
label: "浙江省",
children: [
{
value: "330100",
label: "杭州市",
children: [
{
value: "330106",
label: "西湖区",
},
{
value: "330107",
label: "余杭区",
},
],
},
{
value: "330200",
label: "温州市",
children: [
{
value: "330206",
label: "龙湾区",
},
],
},
],
},
{
value: "120000",
label: "新疆维吾尔自治区",
children: [
{
value: "120100",
label: "博尔塔拉蒙古自治州",
children: [
{
value: "120111",
label: "阿拉山口市",
},
],
},
],
},
];
let arr = [];
function flattenTree(options, label) {
// 1.先遍历数组
for (let i = 0; i < options.length; i++) {
// label 为undefined 为第一次进来
if (!label) {
arr.push([{
value: options[i].value,
label: options[i].label
}])
} else {
// console.log(arr,options, label)
let list = arr.filter(function (item) {
return item[item.length - 1].label == label
})
// 查找到有相同的元素
if (list.length > 0) {
let list1 = list[0].slice();
list1.push({
value: options[i].value,
label: options[i].label
});
arr.push(list1);
if(i == options.length-1){
// 如果是最后一个元素 就把上一个元素删除
// 将原本的元素的进行删除,留下迭代后的元素
arr.splice(arr.indexOf(list[0]),1)
}
}
}
if (options[i].children) flattenTree(options[i].children, options[i].label)
}
}
// flattenTree(options)
// console.log(arr)
/*
[
[{label:浙江,value:330000}],
[{label:新疆,value:320000}]
]
*/
/*
*/
let obj1 = {
value:1,
prop:{
value:2,
prop:{
value:3,
prop:{
value:4,
prop:{
value:5
}
}
}
}
}
while(obj1){
console.log(obj1.value);
obj1 = obj1.prop;
}
</script>
</body>
</html>
递归进行数据处理,数据平铺(flatten)
最新推荐文章于 2024-06-18 09:42:51 发布