Javascript 根据条件向数组添加其他对象

Javascript 根据条件向数组添加其他对象,javascript,arrays,object,Javascript,Arrays,Object,我正在尝试对以下对象数组进行排序: var输入=[ {name:'Trevor Hansen',group:'group 1'}, {name:'Britta Holt',group:'group 2'}, {name:'Jane Smith',group:'group 2'}, {name:'Sandra Adams',group:'group 1'}, {name:'Ali Connors',group:'group 1'}, {name:'John Smith',group:'group

我正在尝试对以下对象数组进行排序:

var输入=[
{name:'Trevor Hansen',group:'group 1'},
{name:'Britta Holt',group:'group 2'},
{name:'Jane Smith',group:'group 2'},
{name:'Sandra Adams',group:'group 1'},
{name:'Ali Connors',group:'group 1'},
{name:'John Smith',group:'group 2'},
{name:'Sandra Williams',group:'group 2'},
{name:'Tucker Smith',group:'group 1'},
],
结果应该是:

var结果=[
{头:'组1'},
{name:'Sandra Adams',group:'group 1'},
{name:'Ali Connors',group:'group 1'},
{name:'Trevor Hansen',group:'group 1'},
{name:'Tucker Smith',group:'group 1'},
{divider:true},
{头:'组2'},
{name:'Britta Holt',group:'group 2'},
{name:'Jane Smith',group:'group 2'},
{name:'John Smith',group:'group 2'},
{name:'Sandra Williams',group:'group 2'},
],
对数组排序后,需要在每个组之前添加一个header对象,然后在组之间添加一个divider对象,但在新的header之前添加

这是我当前的代码,用于对数组进行排序:

功能比较(a、b){
const valueA=a.group.toUpperCase();
const valueB=b.group.toUpperCase();
让比较=0;
如果(值A>值B){
比较=1;
}否则如果(值A<值B){
比较=-1;
}
收益比较;
}
排序(比较);
但在必要时,如何在正确的点添加标题和分隔符


非常感谢您的帮助

我会用两个
reduce()
s链接在一起来解决这个问题

const输入=[{
姓名:“特雷弗·汉森”,
组:“第1组”
},
{
姓名:“布里塔·霍尔特”,
组:“第2组”
},
{
姓名:“简·史密斯”,
组:“第2组”
},
{
姓名:“桑德拉·亚当斯”,
组:“第1组”
},
{
姓名:“阿里·康纳斯”,
组:“第1组”
},
{
姓名:“约翰·史密斯”,
组:“第2组”
},
{
姓名:“桑德拉·威廉姆斯”,
组:“第2组”
},
{
姓名:“塔克·史密斯”,
组:“第1组”
},
]
const groupItems=(arr)=>{
返回arr.reduce((a,c)=>{
如果(c.group的类型)==“未定义”)a[c.group]=[]
a[c.group]=[…a[c.group],c]
归还
}, {})
}
const step1=groupItems(输入)
console.log(步骤1)
const insertHeaders=(obj)=>{
返回Object.entries(obj).reduce((a[key,vals],i,d)=>{
设r=[{
标题:键
},
…VAL,
]
//这需要具有完全相同的数组
//表示为理想输出的:
//最后一个位置没有分隔符
如果(iconsole.log(step2)
您可以简单地循环并添加分隔符。为什么您需要在同一数组中?伪代码希望
input.groupby(x=>x.group).orderby(x=>x.key)。选择(x=>x.prepend({header:x.key})).join({divider:true})
对于简单的方法,只需循环并添加分隔符和标头。您是否遇到了一些具体问题?使用此选项插入索引(以英文链接的形式重新发布)谢谢您的回答。我真的很喜欢这种方法。使用
Vuetify.js
在我的
Vue.js
应用程序中的
下拉菜单中显示用户列表时,我需要这个。现在效果很好!我可以添加代码显示部分中提到的标题。然而,在我的情况下,这更容易,也可以在整个应用程序中更好地使用。