gpt4 book ai didi

javascript - 按组分组数组并按位置排序

转载 作者:行者123 更新时间:2023-11-30 16:32:06 24 4
gpt4 key购买 nike

我有一个数组。我需要按组对这个数组进行分组并按位置排序。我想创建一个新数组,其中组名作为键,值作为按组分组的排序数组,但效果不佳。我该怎么做?

a = [
{id:1,name:'qw'group:'C',name:'hite',position:'1'},
{id:2,name:'qwe'group:'B',name:'ite',position:'2'},
{id:3,name:'qwer'group:'A',name:'ite',position:'3'},
{id:4,name:'qer'group:'D',name:'te',position:'4'},
{id:5,name:'wer'group:'C',name:'whit',position:'5'},
{id:6,name:'er'group:'B',name:'whi',position:'6'},
]

function groupDo(array){
var groups = [];
for (var i in array){
groups[array[i].group] = array[i].group;
}
for (var i in array){
if (groups[array[i].group] == array[i].group){
groups[array[i].group] = array[i];
}
}
}

最佳答案

这是一个简单直接的答案:

var sortByPosition = function(obj1, obj2) {
return obj1.position - obj2.position;
};

var arr = [
{ id: 1, name: 'qw', group: 'C', name: 'hite', position: '1' },
{ id: 2, name: 'qwe', group: 'B', name: 'ite', position: '2' },
{ id: 3, name: 'qwer', group: 'A', name: 'ite', position: '3' },
{ id: 4, name: 'qer', group: 'D', name: 'te', position: '4' },
{ id: 5, name: 'wer', group: 'C', name: 'whit', position: '5' },
{ id: 6, name: 'er', group: 'B', name: 'whi', position: '6' },
];

var grouped = {};

for (var i = 0; i < arr.length; i += 1) {
if(!grouped[arr[i].group]) {
grouped[arr[i].group] = [];
}
grouped[arr[i].group].push(arr[i]);
}

for (var group in grouped) {
grouped[group] = grouped[group].sort(sortByPosition);
}

console.log(grouped);

当你想做这样的事情时,通常建议使用像 lodash 这样的实用程序库。或 underscore.js ,这样您就不必“重新发明轮子”。下面是使用其中一个库的样子:

var arr = [
{ id: 1, name: 'qw', group: 'C', name: 'hite', position: '1' },
{ id: 2, name: 'qwe', group: 'B', name: 'ite', position: '2' },
{ id: 3, name: 'qwer', group: 'A', name: 'ite', position: '3' },
{ id: 4, name: 'qer', group: 'D', name: 'te', position: '4' },
{ id: 5, name: 'wer', group: 'C', name: 'whit', position: '5' },
{ id: 6, name: 'er', group: 'B', name: 'whi', position: '6' },
];

var grouped = _.groupBy(arr, 'group');

for (var group in grouped) {
_.sortBy(grouped[group], 'position');
}

console.log(grouped);

关于javascript - 按组分组数组并按位置排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33180081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com