var a = [
{fencid: 1, userType: '张三', name: 'zz1', id: 1, count: 1},
{fencid: 2, userType: '王二', name: 'zz2', id: 2, count: 2},
{fencid: 3, userType: '张三', name: 'zz3', id: 3, count: 3},
{fencid: 4, userType: '李四', name: 'zz4', id: 4, count: 4},
{fencid: 1, userType: '张三', name: 'zz5', id: 5, count: 5},
{fencid: 2, userType: '赵二', name: 'zz6', id: 6, count: 6},
{fencid: 1, userType: '二麻子', name: 'zz7', id: 7, count: 7}
]
function groupById (a) {
let tempArr = []
let resultArr = []
if (a && a.length) {
for (let i = 0, ilen = a.length; i < ilen; i++) {
let data = a[i]
let fId = data.fencid
if (tempArr.indexOf(fId) === -1) {
let obj = {fencid: data.fencid, userType: data.userType, name: data.name, id:data.id, children: []}
resultArr.push(obj)
tempArr.push(fId)
}
}
for (let ii = 0, ilen = resultArr.length; ii < ilen; ii++) {
let rId = resultArr[ii].fencid
for (let iii = 0, ilen = a.length; iii < ilen; iii++) {
let fId = a[iii].fencid
if (rId === fId) {
resultArr[ii].children.push(a[iii])
}
}
}
}
return resultArr
}
console.log(groupById(a))
function gruopByAttr(a) {
let tempArr = []
let resultArr = []
if (a && a.length) {
for (let i = 0, ilen = a.length; i < ilen; i++) {
let fId = a[i].fencid
if (tempArr.indexOf(fId) === -1) {
a[i].children = []
resultArr.push(a[i])
}else {
for (let ii = 0, ilen = resultArr.length; ii < ilen; ii++){
let ftId = resultArr[ii].fencid
let data = resultArr[ii]
if (ftId === fId) {
resultArr[ii].children.push(a[i])
}
}
}
tempArr.push(fId)
}
}
return resultArr
}
let odata = gruopByAttr(a)
let odatas = countGroup(odata)
function countGroup (a) {
if (a && a.length) {
for (let i = 0, ilen = a.length; i < ilen; i++) {
let t = a[i].userType
let c = a[i].count
let len = a[i] && a[i].children && a[i].children.length
for (let ii = 0; ii < len; ii++) {
let tin = a[i].children[ii].userType
let cin = a[i].children[ii].count
if (t === tin) {
a[i].children[ii].count = cin + c
}
}
}
}
return a
}
var a = [
{fencid: 1, userType: '张三', name: 'zz1', id: 1, count: 1},
{fencid: 2, userType: '张三', name: 'zz1', id: 1, count: 1},
{fencid: 2, userType: '王二', name: 'zz2', id: 2, count: 2},
{fencid: 3, userType: '张三', name: 'zz3', id: 3, count: 3},
{fencid: 4, userType: '李四', name: 'zz4', id: 4, count: 4},
{fencid: 1, userType: '张三', name: 'zz5', id: 5, count: 5},
{fencid: 2, userType: '赵二', name: 'zz6', id: 6, count: 6},
{fencid: 1, userType: '二麻子', name: 'zz7', id: 7, count: 7}
]
function groupsByUniq (a, t) {
if (a && a.length) {
let temp = []
let result = []
for (let i = 0, ilen = a.length; i < ilen; i++) {
let fid = a[i].fencid
let fty = a[i].userType
if (t) {
if (temp.indexOf(fty) === -1) {
temp.push(fty)
result.push({fencid: fid, userType: fty, children: []})
}
} else {
if (temp.indexOf(fid) === -1) {
temp.push(fid)
result.push({fencid: fid, userType: fty, children: []})
}
}
}
for (let it = 0, ilen = result.length; it < ilen; it++) {
let fid = t ? result[it][t] : result[it]['fencid']
let tarr = []
for (let i = 0, ilen = a.length; i < ilen; i++) {
let _fid = t ? a[i][t] : a[i]['fencid']
if (fid === _fid) {
result[it].children.push(a[i])
}
}
}
return result
}
}
let odata = groupsByUniq(a)
for (let i = 0, ilen = odata.length; i < ilen; i++) {
let obj = odata[i].children
let result = groupsByUniq(obj, 'userType')
console.log(result)
}
console.log(odata)
// function groupsByUniqCout (arr) {
// if (arr && arr.length) {
// let temp = []
// let result = []
// for (let i = 0, ilen = arr.length; i < ilen; i++) {
// let fid = arr[i].fencid
// result.push({fencid: fid, children: []})
// }
// for (let it = 0, ilen = arr.length; it < ilen; it++) {
// let fid = arr[it]['fencid']
// let child = arr[it].children
// let temp = []
// for (let ci = 0, ilen = child.length; ci < ilen; ci++) {
// let userType = child[ci].userType
// let id = child[ci].id
// if (temp.indexOf(userType) === -1) {
// temp.push(userType)
// // result[it].children.push(child[ci])
// }
// for (let in = 0, ilen = temp.length; in < ilen; in++) {
// let t = temp[in]
// let count = 0
// for (let cii = 0, ilen = child.length; cii < ilen; cii++) {
// let inuserType = child[cii].userType
// let inid = child[cii].id
// let c = child[cii].count
// if (t === inuserType) {
// count += c
// }
// }
// // result[it].children.push(child[ci])
// }
// console.log(userType)
// }
// }
// console.log(result)
// }
// }
function gruopByAttr (a) {
let tempArr = []
let resultArr = []
if (a && a.length) {
for (let i = 0, ilen = a.length; i < ilen; i++) {
let fId = a[i].fenceId
if (tempArr.indexOf(fId) === -1) {
a[i].children = []
resultArr.push(a[i])
} else {
for (let ii = 0, ilen = resultArr.length; ii < ilen; ii++) {
let ftId = resultArr[ii].fenceId
let data = resultArr[ii]
if (ftId === fId) {
resultArr[ii].children.push(a[i])
}
}
}
tempArr.push(fId)
}
}
return resultArr
}
function countGroup (a) {
if (a && a.length) {
for (let i = 0, ilen = a.length; i < ilen; i++) {
let t = a[i].userType
let c = a[i].clickCount
let len = a[i] && a[i].children && a[i].children.length
for (let ii = 0; ii < len; ii++) {
let tin = a[i].children[ii].userType
let cin = a[i].children[ii].clickCount
if (t === tin) {
a[i].children[ii].clickCount = cin + c
}
}
}
}
return a
}
console.log(odatas)
console