我正在尝试通过 jQuery 中的 Id、我的代码的详细信息以及我想要实现的目标对我的数组进行分组。
我的数组是这样的:
var array = [
{id:1, value:1},
{id:1, value:2},
{id:1, value:3},
{id:2, value:4},
{id:2, value:5},
{id:2, value:6},
{id:3, value:7},
{id:3, value:8},
{id:3, value:1},
{id:4, value:2},
{id:4, value:3},
{id:4, value:4},
{id:6, value:5},
{id:6, value:1},
{id:6, value:2},
{id:12, value:3},
{id:12, value:4},
{id:12, value:5},
{id:1, value:"a"},
{id:1, value:"b"},
{id:1, value:"c"},
{id:2, value:4},
{id:2, value:5},
];
想要的结果应该是
var output = [
{
id:1,
group:[
{value:1},
{value:2},
{value:3},
]
},
{
id:2,
group:[
{value:4},
{value:5},
{value:6},
]
},
{
id:3,
group:[
{value:7},
{value:8},
{value:1},
]
},
{
id:4,
group:[
{value:2},
{value:3},
{value:4},
]
},
{
id:6,
group:[
{value:5},
{value:1},
{value:2},
]
},
{
id:12,
group:[
{value:3},
{value:4},
{value:5},
]
},
{
id:1,
group:[
{value:a},
{value:b},
{value:c},
]
}
{
id:2,
group:[
{value:4},
{value:5}
]
}
];
是否有一个有用的脚本,或者我应该坚持使用 js,然后循环遍历生成的对象来完成我自己?
我正在尝试:
var array1 = [
{id:1, value:1},
{id:1, value:2},
{id:1, value:3},
{id:2, value:4},
{id:2, value:5},
{id:2, value:6},
{id:3, value:7},
{id:3, value:8},
{id:3, value:1},
{id:4, value:2},
{id:4, value:3},
{id:4, value:4},
{id:6, value:5},
{id:6, value:1},
{id:6, value:2},
{id:12, value:3},
{id:12, value:4},
{id:12, value:5},
{id:1, value:"a"},
{id:1, value:"b"},
{id:1, value:"c"},
{id:2, value:4},
{id:2, value:5},
];
var FinalArray=[];
for(i=0;i<array1.length;i++)
{
var newArray={id:array1[i].id,group:{value:[]}};
var group={value:[]};
newArray.group=group;
if(newArray.id == array1[i].id){
for(j=i;j<array1.length;j++)
{
if(array1[i].id==array1[j].id)
{
group.value.push(array1[j].value);
}
}
}
var IsAddeble=true;
if(FinalArray.length>0)
{
for(k=0;k<FinalArray.length;k++)
{
if(FinalArray[FinalArray.length-1].id==array1[i].id)
{
IsAddeble=false;
}
}
}
if(IsAddeble){
FinalArray.push(newArray);
}
}
console.log(FinalArray);
有什么解决方案吗?
最佳答案
您可以检查结果数组的最后一项并在 group
中插入一个新对象或创建一个新的组对象。
var array = [{ id: 1, value: 1 }, { id: 1, value: 2 }, { id: 1, value: 3 }, { id: 2, value: 4 }, { id: 2, value: 5 }, { id: 2, value: 6 }, { id: 3, value: 7 }, { id: 3, value: 8 }, { id: 3, value: 1 }, { id: 4, value: 2 }, { id: 4, value: 3 }, { id: 4, value: 4 }, { id: 6, value: 5 }, { id: 6, value: 1 }, { id: 6, value: 2 }, { id: 12, value: 3 }, { id: 12, value: 4 }, { id: 12, value: 5 }, { id: 1, value: "a" }, { id: 1, value: "b" }, { id: 1, value: "c" }, { id: 2, value: 4 }, { id: 2, value: 5 }],
result = array.reduce((r, { id, value }) => {
var last = r[r.length - 1];
if (last && last.id === id) {
last.group.push({ value });
} else {
r.push({ id, group: [{ value }] });
}
return r;
}, [])
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
关于javascript - 如何使用 jquery javascript 对数组项元素进行分组,这些元素使用与项不同的对象,值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51337520/