鍍金池/ 問答/HTML/ js數(shù)據(jù)結(jié)構(gòu)重組

js數(shù)據(jù)結(jié)構(gòu)重組

有如下數(shù)據(jù)結(jié)構(gòu)。


e   test1
b   test2
c   test2
i   test3
d   test3
f   test3
k   test3
h   test3

左邊是字段1(值),右邊是字段2(屬性名)




把屬性名進行去重,然后把左側(cè)的值歸并到指定的屬性名下,如下格式:

[
    {
        category: 'test1',
        arr: ['e']
    },
    {
        category: 'test2',
        arr: ['b','c']
    },
    {
        category: 'test3',
        arr: ['i','d','k','f','h']
    }
]


我的思路,遍歷數(shù)組,已經(jīng)拿到了屬性值的數(shù)組,形如
[
    {
        category: 'test1'
    },
    {
        category: 'test2'
    },
    {
        category: 'test3'
    }
].
有啥思路方法獲取同屬性數(shù)組然后放到對應(yīng)的字段名下?
回答
編輯回答
裸橙

這個不難啊,你可以在獲取屬性數(shù)組的時候就新建一個map, 形如:

var cate = new Map()
cate.set('test1', 0)
cate.set('test2', 1)
cate.set('test3', 2)

然后去遍歷原數(shù)組:

// 屬性數(shù)組
prop = [
    {
        category: 'test1',
        arr: []
    },
    {
        category: 'test2',
        arr: []
    },
    {
        category: 'test3',
        arr: []
    }
]

// 假設(shè)原數(shù)組為二維數(shù)組
for (i in categorys) {
  prop[cate[categorys[i][1]].arr.push(lecategorys[i][0])
}
2018年7月13日 21:23