当前位置:网站首页>js将数组根据指定属性值分组成二维数组
js将数组根据指定属性值分组成二维数组
2022-07-27 12:52:00 【Sunny_lxm】
根据mulit字段+codeKey+codeType三个字段进行分组
oneDimensionalArr: [
{multi: 'one',codeKey: 'LTL', codeType: 1, name: 'ABC', id: 1},
{multi: 'one',codeKey: 'LTL', codeType: 1, name: 'ioh', id: 3},
{multi: 'mulit',codeKey: 'LTL', codeType: 1, name: 'CDF', id: 6},
{multi: 'mulit',codeKey: 'FES', codeType: 1, name: 'werr', id: 4},
{multi: 'one',codeKey: 'FES', codeType: 2, name: 'ytg', id: 5},
{multi: 'one',codeKey: 'FES', codeType: 2, name: 'CDF', id: 2},
{multi: 'mulit',codeKey: 'FRE', codeType: 2, name: 'etery', id: 7},
{multi: 'mulit',codeKey: 'FRE', codeType: 2, name: 'nvn', id: 8},
{multi: 'mulit',codeKey: 'FRE', codeType: 2, name: 'abc', id: 9},
{multi: 'one',codeKey: 'Small', codeType: 1, name: 'ware', id: 10},
{multi: 'one',codeKey: 'Small', codeType: 1, name: 'trwe', id: 11},
]
最终想要的结果
[
{
multi: 'one',
codeKey: 'LTL',
codeType: 1,
list:[
{multi: 'one',codeKey: 'LTL', codeType: 1, name: 'ABC', id: 1},
{multi: 'one',codeKey: 'LTL', codeType: 1, name: 'ioh', id: 3},
]
},
{
multi: 'mulit',
codeKey: 'LTL',
codeType: 1,
list:[{multi: 'mulit',codeKey: 'LTL', codeType: 1, name: 'CDF', id: 6}]
},
{
multi: 'mulit',
codeKey: 'FES',
codeType: 1,
list:[
{multi: 'mulit',codeKey: 'FES', codeType: 1, name: 'werr', id: 4},
]
},
{
multi: 'one',
codeKey: 'FES',
codeType: 2,
list:[
{multi: 'one',codeKey: 'FES', codeType: 2, name: 'ytg', id: 5},
{multi: 'one',codeKey: 'FES', codeType: 2, name: 'CDF', id: 2},
]
},
{
multi: 'mulit',
codeKey: 'FRE',
codeType: 2,
list:[
{multi: 'mulit',codeKey: 'FRE', codeType: 2, name: 'etery', id: 7},
{multi: 'mulit',codeKey: 'FRE', codeType: 2, name: 'nvn', id: 8},
{multi: 'mulit',codeKey: 'FRE', codeType: 2, name: 'abc', id: 9},
]
},
{
multi: 'one',
codeKey: 'Small',
codeType: 1,
list:[
{multi: 'one',codeKey: 'Small', codeType: 1, name: 'ware', id: 10},
{multi: 'one',codeKey: 'Small', codeType: 1, name: 'trwe', id: 11},
]
},实现方案
// 根据指定属性值将一维数组进行分组成二维数组
mapTwoDimension(arr) {
console.log(arr, 'arr');
let dataArr = []
if (arr.length === 0) {
return dataArr
}
arr.map(oneDim => {
if (dataArr.length == 0) {
dataArr.push({
multi: oneDim.multi,
codeKey: oneDim.codeKey,
codeType: oneDim.codeType,
list: [oneDim]
})
} else {
let res = dataArr.some(item => { // 判断相同,有就添加到当前项
if (item.multi == oneDim.multi && item.codeType == oneDim.codeType &&
item.codeKey == oneDim.codeKey) {
item.list.push(oneDim)
return true
}
})
if (!res) { // 如果没找相同添加一个新对象
dataArr.push({
multi: oneDim.multi,
codeKey: oneDim.codeKey,
codeType: oneDim.codeType,
list: [oneDim]
})
}
}
})
console.info(dataArr, 'dataArr')
return dataArr
},
边栏推荐
猜你喜欢

Set up SSH key based authentication using putty

Go语言系列:如何搭建Go语言开发环境?

Realize the disk partition and file system mount of the newly added hard disk

JS basic knowledge collation - array

JNI程序如何进行参数传递

How to debug JNI program

马斯克被曝绿了谷歌创始人:导致挚友二婚破裂,曾下跪求原谅
![[300 + selected interview questions from big companies continued to share] big data operation and maintenance sharp knife interview question column (IX)](/img/cf/44b3983dd5d5f7b92d90d918215908.png)
[300 + selected interview questions from big companies continued to share] big data operation and maintenance sharp knife interview question column (IX)

Article reproduction: srcnn

初学者入门:使用WordPress搭建一个专属自己的博客
随机推荐
固定定位
利用eBPF探测Rootkit漏洞
Perfect guide | how to use ODBC for agent free Oracle database monitoring?
SCI thesis writing
52:第五章:开发admin管理服务:5:开发【分页查询admin账号列表,接口】;(Swagger的@ApiParam(),对方法参数进行注释;PageHelper分页插件;拦截器拦截检查登录状态)
电滑环的常用类型
Redis总结:缓存雪崩、缓存击穿、缓存穿透与缓存预热、缓存降级
eBPF/Ftrace
v-show
clear
51: Chapter 5: develop admin management services: 4: develop [add admin account, interface]; (only [user name + password, method]; [@t...] annotation controls transactions; when setting cookies, do yo
18. Text processing tool -grep
evutil_make_internal_pipe_: pipe: Too many open files
Feign的两个调用处理器
Set up SSH key based authentication using putty
Verilog的系统任务----$fopen、$fclose和$fdisplay, $fwrite,$fstrobe,$fmonitor
Qt优秀开源项目之十三:QScintilla
Seata 在蚂蚁国际银行业务的落地实践
7.26模拟赛总结
面试考点:三种图的问题