请问如何用js 把 ["A01","A01-1", "A01-2", "A01-3", "A02", "A02-1"]
(可能还有A03 A03-1 A03-2 A04 A04-1)等等等转换为
[
{menuId:"A01",subId:"1,2,3"},
{menuId:"A02",subId:"1"}
]
这样的格式(subId对应的是menuId后面的数字 我说不清楚 抱歉)
请求前端大神帮忙看下
请问如何用js 把 ["A01","A01-1", "A01-2", "A01-3", "A02", "A02-1"]
(可能还有A03 A03-1 A03-2 A04 A04-1)等等等转换为
[
{menuId:"A01",subId:"1,2,3"},
{menuId:"A02",subId:"1"}
]
这样的格式(subId对应的是menuId后面的数字 我说不清楚 抱歉)
请求前端大神帮忙看下
["A01","A01-1", "A01-2", "A01-3", "A02", "A02-1"].reduce((s, n)=>{
var [menuId, subId] = n.split('-');
// console.log(menuId, subId)
if(!menuId || !subId) return s
if(!s.hash[menuId]){
s.hash[menuId] = {menuId,subId}
s.arr.push(s.hash[menuId])
}else{
s.hash[menuId].subId += `,${subId}`
}
return s
}, {
hash: {},
arr:[]
})
var x = ["A01","A01-1", "A01-2", "A01-3", "A02", "A02-1"];
var temp = {};
x.map(function(item) {
var splitedItems = item.split('-');
if (!temp[splitedItems[0]]) {
temp[splitedItems[0]] = [];
}
if (splitedItems[1]) {
temp[splitedItems[0]].push(splitedItems[1]);
}
});
var results = Object.entries(temp).map(function(item) {
return {menuId: item[0],subId: item[1].join(',')};
});
console.log(results);
arr.reduce((s, v) => (v.split('-').length === 1 ? s.push({menuId: v, subId: []}) : s[s.length - 1].subId.push(v.split('-')[1]), s), []).map(({menuId, subId}) => ({menuId, subId: subId.join(',')}))
13 回答13k 阅读
7 回答2.2k 阅读
5 回答1.5k 阅读
3 回答1.3k 阅读✓ 已解决
5 回答1.7k 阅读✓ 已解决
6 回答1.3k 阅读✓ 已解决
2 回答1.4k 阅读✓ 已解决