var data = [{"menu":47,"children":[56]},{"menu":47,"children":[55]},{"menu":48,"children":[59]},{"menu":48,"children":[58]}]
遍历data找出相同menu在合并children,得到下面数据结构
[{"menu":47,"children":[55,56]},{"menu":48,"children":[58,59]}]
var data = [{"menu":47,"children":[56]},{"menu":47,"children":[55]},{"menu":48,"children":[59]},{"menu":48,"children":[58]}]
遍历data找出相同menu在合并children,得到下面数据结构
[{"menu":47,"children":[55,56]},{"menu":48,"children":[58,59]}]
loadData() {
let d = this.data;
//获取不重复的menu选项 menuOpt => [47,48]
let menuOpt = Array.from(new Set(d.map(v => v.menu)));
//处理数据
let d_copy = menuOpt.map(m => {
//获取同一个menu下的children
let itemArr = d.map(v => {
if (v.menu === m) {
return v.children;
}
})
//合并children
let children = [];
itemArr.forEach(v => {
if (v) {
children = children.concat(v);
}
});
//对children去重
children = [...new Set(children)];
return {
menu: m,
children: children
}
})
console.log('d_copy =>\n', d_copy)
}
var data = [{"menu":47,"children":[56]},{"menu":47,"children":[55]},{"menu":48,"children":[59]},{"menu":48,"children":[58]}],
newData = [];
data.map(function(d) {
var boo = false,
i = 0,
len = newData.length;
for(; i < len; i++){
var nd = newData[i];
boo = nd.menu === d.menu ? true : false;
if(boo) {
nd.children.push(d.children[0])
break;
}
}
boo ? '' : newData.push(d);
});
console.log(newData);
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.6k 阅读✓ 已解决
ES6:
ES5: