使用js,根据数组中对象属性值的不同将数组进行分组-2
程序员文章站
2022-05-06 20:37:18
...
需求:将下面数组-对象中的index_name相同的对象抽离出来,放入一个新数组中
let tempArr = [
{ domain: 'a', index_name: '云淡风轻' },
{ domain: 'b', index_name: '递归' },
{ domain: 'c', index_name: '云淡风轻' },
{ domain: 'd', index_name: '遍历' },
{ domain: 'e', index_name: '云淡风轻' },
{ domain: 'f', index_name: '云淡风轻' },
{ domain: 'g', index_name: '递归' }
]
解决办法2:
let formateArrDataA = (initialArr, name) => {
// 判定传参是否符合规则
if (!(initialArr instanceof Array)) {
return '请传入正确格式的数组'
}
if (!name) {
return '请传入对象属性'
}
//先获取一下这个数组中有多少个"name"
let nameArr = []
for (let i in initialArr) {
if (nameArr.indexOf(initialArr[i][`${name}`]) === -1) {
nameArr.push(initialArr[i][`${name}`])
}
}
//新建一个包含多个list的结果对象
let tempObj = {}
// 根据不同的"name"生成多个数组
for (let k in nameArr) {
for (let j in initialArr) {
if (initialArr[j][`${name}`] == nameArr[k]) {
// 每次外循环时新建一个对应"name"的数组, 内循环时当前数组不变
tempObj[nameArr[k]] = tempObj[nameArr[k]] || []
tempObj[nameArr[k]].push(initialArr[j])
}
}
}
return tempObj
}
console.log(formateArrDataA(tempArr, 'index_name'))
实现效果:
参考文章(我将这位博主的代码简单封装了个函数):https://www.cnblogs.com/zyl-Tara/p/9243873.html(如何根据数组中对象的某个属性值生成对应的多个数组)
上一篇: VUE登录,注册