js 如何将数组重复元素归类组装成树形结构

现在有数据如下所示:

var _arr = [{'area':'北京','name':'刘德华'},{'area':'西安','name':'小明'},{'area':'德国','name':'小红'},{'area':'德国','name':'小李'},{'area':'东北','name':'小赵'},{'area':'东北','name':'小华'}];  

希望将数据重新组装成

var _arr = [{'area':'北京','name':['刘德华']},{'area':'西安','name':['小明']},{'area':'德国','name':['小红','小李']},{'area':'东北','name':['小赵','小华']}];  

也就是对area进行判断 如果area相同,将名字归入到同一个数组,求方法。

阅读 5.5k
2 个回答

用map就行

let m = {}
for(let i = 0; i< _arr.length; i++){
    let t = _arr[i]
    if(!m[t.area]){
        m[t.area] = []
    }
    m[t.area].push(t.name)
}

let arr = []
for(let key in m){
    arr.push({ area: key, name: m[key] })
}

处理数组、对象数据的思路很重要,一般手段是递归,或者借助第3个变量来完成遍历,还可以利用对象key值不重复的原理做很多事情。

推荐问题
宣传栏