当前位置:网站首页>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
},
边栏推荐
- 纵横靶场-图片的奥秘
- 18. Text processing tool -grep
- Redis summary: cache avalanche, cache breakdown, cache penetration and cache preheating, cache degradation
- Amd adrenalin 22.7.1 driver update: double the performance of OpenGL and support Microsoft win11 22h2 system
- Height collapse and BFC
- QT clipboard qclipboard copy paste custom data
- [node+ts] build node+typescript project
- 腾讯云联合中国工联院发布工业AI质检标准化研究成果加速制造业智能化转型
- Dichotomy queries values in an array
- Have you understood these 30 questions of enabling financial risk control plus points
猜你喜欢

Redis summary: cache avalanche, cache breakdown, cache penetration and cache preheating, cache degradation

V-on basic instruction

MFC FTP创建多级文件夹、上传文件到FTP指定目录

Have you understood these 30 questions of enabling financial risk control plus points

QT excellent open source project 13: qscintilla

JS basic knowledge collation - array

马斯克被曝绿了谷歌创始人:导致挚友二婚破裂,曾下跪求原谅

Jesd204b debugging notes (practical version)

eBPF/Ftrace

A survey of video game addictive behavior research
随机推荐
Bank case | ZABBIX cross version upgrade guide, isn't 4.2-6.0 popular?
v-show
Using ebpf to detect rootkit vulnerabilities
数据库HTAP能力强弱怎么看
51:第五章:开发admin管理服务:4:开发【新增admin账号,接口】;(只开发了【用户名+密码的,方式】;【@T…】注解控制事务;设置cookie时,是否需要使用URLEncoder去编码;)
高度塌陷最终解决方案(无副作用)
Height collapse and BFC
eBPF/Ftrace
Preliminary discussion on NetGen and Gmsh mesh generation of any multiple sub models of CAD based on osg+occ
Adhesive positioning
7-16 daily sword finger offer II 041. Average value of sliding window
Poj1548 robots [bipartite graph minimum path coverage]
Insert sort, positive order, reverse order
Seata 在蚂蚁国际银行业务的落地实践
Feign client automatic assembly of three clients
Hierarchy of elements
绝对定位
Feign's overall process
How to debug JNI program
shell环境变量以及set,env,export的区别