使用场景:地址的数据,省市区三级或则省市两级的地址,过滤部分地区
代码:
// 初始地址数据
const addressData = [
{
"provinceId": "200",
"provinceName": "广东",
"citys": [
{
"cityId": "757",
"cityName": "佛山"
}, {
"cityId": "200",
"cityName": "广州"
}, {
"cityId": "755",
"cityName": "深圳"
}
]
},
{
"provinceId": "371",
"provinceName": "河南",
"citys": [
{
"cityId": "376",
"cityName": "信阳"
}, {
"cityId": "371",
"cityName": "郑州"
}]
},
];
// 过滤数组
const arrFilter = [
{
'provinceId': 200,//广东
'citys': [200, 755],//广州-深圳
},
{
'provinceId': 371,//河南
'citys': [371],//郑州
}
]
// 过滤函数
function addressFilter() {
var data = addressData;
var arr = arrFilter;
for (let i1 = 0; i1 < data.length; i1++) {
for (let j1 = 0; j1 < arr.length; j1++) {
if (data[i1].provinceId == arr[j1].provinceId) {
console.log("省级匹配:" + data[i1].provinceName);
var datab = data[i1].citys
for (let i2 = 0; i2 < datab.length; i2++) {
var arrb = arr[j1].citys
for (let j2 = 0; j2 < arrb.length; j2++) {
if (datab[i2].cityId == arrb[j2]) {
console.log(datab[i2].cityName);
datab.splice(i2, 1);
data[i1].citys = datab;
}
}
}
}
}
}
console.log("data:", data)
return data;
}
// 执行函数
addressFilter();
控制台打印如下
后续
- 其实,过滤的数组arrFilter和初始的数组addressData,格式完全一致最好,datab[i2].cityId == arrb[j2]这里的判断就可以改为一致的了,这里仅仅作为示例,不再修改了。
- 如果过滤整个省份,需要定义一种格式,通过修改过滤函数实现。