var list = [
{name: 'color', value: 'pink'},
{name: 'color', value: 'black'},
{name: 'color', value: 'green'},
{name: 'size', value: 's'},
{name: 'size', value: 'm'},
{name: 'type', value: 'a'},
{name: 'type', value: 'b'},
{name: 'type', value: 'c'},
];
将 list 转换成 list2的形式 :
var list2 = [
{ name: 'color', value: ['pink','black', 'green' ]},
{ name: 'size', value: ['s','m' ]},
{ name: 'type', value: ['a','b', 'c' ]},
]
下面是胡乱倒腾的做法:
var list2 = []
var map = {}
var dest = []
for (var i = 0; i <list.length; i++) {
var ai = list[i];
if (!map[ai.name]) {
dest.push({
name: ai.name,
value: ai.value + ","
});
map[ai.name] = ai;
} else {
for (var j = 0; j < dest.length; j++) {
var dj = dest[j];
if (dj.name == ai.name) {
dj.value += ai.value + ",";
break;
}
}
}
}
dest.forEach((item, index) => {
var arr = {
name: item.name,
value: []
};
arr.value = item.value.split(",");
this.list2.push(arr);
});
得出的结果好像是有问题,没有达到效果, 请大伙帮忙看看囧[囧]
你的for循环添加逗号分隔有问题,最后多添加了个逗号
改成如下:
for (var i = 0; i <list.length; i++) {