数组对象转对象数组

const city = [
    {
        province: '福建省',
        city: '福州市',
        county: '鼓楼区',
        street: '东街街道',
        store: '三坊七巷'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '鼓楼区',
        street: '东街街道',
        store: '达明小吃街'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '鼓楼区',
        street: '东街街道',
        store: '东方百货'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '鼓楼区',
        street: '华大街道',
        store: '农贸市场'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '鼓楼区',
        street: '华大街道',
        store: '淳百味'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '仓山区',
        street: '金山街道',
        store: '淳百味'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '仓山区',
        street: '金山街道',
        store: '一点点'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '晋安区',
        street: '茶园街道',
        store: '华莱士'
    },
    {
        province: '福建省',
        city: '福州市',
        county: '晋安区',
        street: '茶园街道',
        store: '省体中心'
    },
    {
        province: '福建省',
        city: '厦门市',
        county: '同安区',
        street: '大同街道',
        store: '快乐番薯'
    },
    {
        province: '福建省',
        city: '厦门市',
        county: '同安区',
        street: '大同街道',
        store: '喜之然'
    },
    {
        province: '福建省',
        city: '厦门市',
        county: '思明区',
        street: '鼓浪屿街道',
        store: '鼓浪屿'
    },
    {
        province: '广东省',
        city: '汕头市',
        county: '朝阳区',
        street: '朝阳街道',
        store: '潮汕牛肉'
    },
    {
        province: '广东省',
        city: '揭阳市',
        county: '揭东区',
        street: '揭东街道',
        store: '可乐鸡翅'
    }
]

1、取出一维数据

let provinceData = []
cities.map(item => {
    provinceData.push(item.province)
})
// 去重
provinceData = provinceData.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index
})
// ['福建省','广东省']

 2、取出二维数据

let provinceData = []
//取出第一层数据
cities.map(item => {
    provinceData.push(item.province)
})
// 去重
provinceData = provinceData.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index
})
// 取出第二层数据
let cityData = []
provinceData.map(pitem => {
    let pCity = []
    cities.map(item => {
        // 取出同一个省份的所有city
        if(pitem === item.province) {
            pCity.push(item.city)
        }
    })
    // 去重
    pCity = pCity.filter((item, index, arr) => {
        return arr.indexOf(item, 0) === index
    })
    // 将数据增加到对应的对象
    cityData[pitem] = pCity
})

 3、取出三维数据 

// 第一层数据
let provinceData = [];
this.cities.map((item) => {
    provinceData.push(item.province);
});
// 去重
provinceData = provinceData.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index;
});

// 第二层数据
let cityData = [];
provinceData.map((pitem) => {
    let pCity = [];
    this.cities.map((item) => {
        if (pitem === item.province) {
            pCity.push(item.city);
        }
    });
    // 去重
    pCity = pCity.filter((item, index, arr) => {
        return arr.indexOf(item, 0) === index;
    });
    cityData[pitem] = pCity;
});

// 第三次数据
let countyData = [];
provinceData.map((pitem) => {
    let city = []
    cityData[pitem].map((citem) => {
        let county = []
        this.cities.map(item => {
            if(item.province === pitem && item.city === citem) {
                county.push(item.county)
            }
        })
        county = county.filter((item, index, arr) => {
            return arr.indexOf(item, 0) === index;
        });
    city[citem] = county
    });
countyData[pitem] = city
});

 4、取出四维数据

// 第一层数据
let provinceData = [];
this.cities.map((item) => {
    provinceData.push(item.province);
});
// 去重
provinceData = provinceData.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index;
});

// 第二层数据
let cityData = [];
provinceData.map((pitem) => {
    let pCity = [];
    this.cities.map((item) => {
        if (pitem === item.province) {
            pCity.push(item.city);
        }
    });
    pCity = pCity.filter((item, index, arr) => {
        return arr.indexOf(item, 0) === index;
    });
    cityData[pitem] = pCity;
});

// 第三层数据
let countyData = [];
provinceData.map((pitem) => {
    let city = []
    cityData[pitem].map((citem) => {
        let county = []
        this.cities.map(item => {
            if(item.province === pitem && item.city === citem) {
                county.push(item.county)
            }
        })
        // 去重
        county = county.filter((item, index, arr) => {
            return arr.indexOf(item, 0) === index;
        });
        city[citem] = county
    });
    countyData[pitem] = city
});

// 第四层数据
let streetData = []
provinceData.map(pitem => {
    let city = []
    cityData[pitem].map(citem => {
        let county = []
        countyData[pitem][citem].map(yitem => {
            let street = []
            this.cities.map(item => {
                if(item.province === pitem && item.city === citem && item.county                         === yitem) {
                    street.push(item.street)
                }
            })
            // 去重
            street = street.filter((item, index, arr) => {
                return arr.indexOf(item, 0) === index;
            });
            county[yitem] = street
        })
        city[citem] = county
    })
    streetData[pitem] = city
})

 5、取出五维数据

// 第一层数据
let provinceData = [];
this.cities.map((item) => {
    provinceData.push(item.province);
});
// 去重
provinceData = provinceData.filter((item, index, arr) => {
    return arr.indexOf(item, 0) === index;
});

// 第二层数据
let cityData = [];
provinceData.map((pitem) => {
    let pCity = [];
    this.cities.map((item) => {
        if (pitem === item.province) {
            pCity.push(item.city);
        }
    });
    // 去重
    pCity = pCity.filter((item, index, arr) => {
        return arr.indexOf(item, 0) === index;
    });
    cityData[pitem] = pCity;
});

// 第三次数据
let countyData = [];
provinceData.map((pitem) => {
    let city = []
    cityData[pitem].map((citem) => {
        let county = []
        this.cities.map(item => {
            if(item.province === pitem && item.city === citem) {
                county.push(item.county)
            }
        }) 
        //去重
        county = county.filter((item, index, arr) => {
            return arr.indexOf(item, 0) === index;
        });
    city[citem] = county
    });
    countyData[pitem] = city
});

// 第四次数据
let streetData = []
    provinceData.map(pitem => {
        let city = []
        cityData[pitem].map(citem => {
            let county = []
            countyData[pitem][citem].map(yitem => {
                let street = []
                this.cities.map(item => {
                    if(item.province === pitem && item.city === citem && item.county === yitem) {
                        street.push(item.street)
                    }
                })
                // 去重
                street = street.filter((item, index, arr) => {
                    return arr.indexOf(item, 0) === index;
                });
                county[yitem] = street
        })
        city[citem] = county
    })
    streetData[pitem] = city
})

// 第五次数据
let storeData= []
provinceData.map(pitem => {
    let city = []
    cityData[pitem].map(citem => {
        let county = []
        countyData[pitem][citem].map(yitem => {
            let street = []
            streetData[pitem][citem][yitem].map(sitem => {
                let store = []
                this.cities.map(item => {
                    if(item.province === pitem && item.city === citem && item.county === yitem && item.street === sitem) {
                        store.push(item.store)
                    }
                })
                // 去重
                store = store.filter((item, index, arr) => {
                    return arr.indexOf(item, 0) === index;
                });
                street[sitem] = store
            })
            county[yitem] = street
        })
        city[citem] = county
    })
    storeData[pitem] = city
}) 

补充:取出对应对象数据中数组(以最后五维数据为例)

// 第一维
let provide = []
provide = Object.keys(storeData)
console.log("provide", provide)

// 第二维
provide.map(item => {
    let city = []
    city = Object.keys(storeData[item])
    console.log("city", city)
})

// 第三维
provide.map(item => {
    let city = []
    city = Object.keys(storeData[item])
    city.map(citem => {
        let county = []
        county = Object.keys(storeData[item][citem])
        console.log("county",county)
    })
})

// 第四维
provide.map(item => {
    let city = []
    city = Object.keys(storeData[item])
        city.map(citem => {
            let county = []
            county = Object.keys(storeData[item][citem])
            county.map(yitem => {
                let street = []
                street = Object.keys(storeData[item][citem][yitem])
                console.log("street", street)
        })
    })
})

// 第五维
provide.map(item => {
    let city = []
    city = Object.keys(storeData[item])
        city.map(citem => {
            let county = []
            county = Object.keys(storeData[item][citem])
                county.map(yitem => {
                    let street = []
                    street = Object.keys(storeData[item][citem][yitem])
                    street.map(sitem => {
                        console.log('store', storeData[item][citem][yitem][sitem])
                    })
             })
        })
    })
})

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Root1216

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值