我有一个对象数组,其中包含一个名为name的属性...
var myList = [{
name: 'Apple'
}, {
name: 'Nervousness',
}, {
name: 'Dry'
}, {
name: 'Assign'
}, {
name: 'Date'
}]
基本上,我正在尝试创建一个像这样设置的数组:
[{
name: 'A',
items: [{
name: 'Apple'
}, {
name: 'Assign'
}]
}, {
name: 'D',
items: [{
name: 'Date',
}, {
name: 'Dry',
}]
}, {
name: 'N',
items: [{
name: 'Nervousness',
}]
}];
我的对象数组需要按字母顺序排序,然后放入一个新的对象中,带有相应字母的父键/值为“name”。
我可以按以下方式进行字母顺序排列...
myList.sort(function (a, b) {
if (a.name < b.name) return -1;
if (a.name > b.name) return 1;
return 0;
});
然后,我可以创建一个由首字母组成的数组...
var headerLetters = [];
angular.forEach(myList, function (item) {
var firstLetter = item.name.charAt(0);
if (headerLetters.indexOf(firstLetter) === -1) {
headerLetters.push(firstLetter);
}
});
但是,这就是我卡住的地方...我可以检查重复的第一个字母,但是如何遍历我的对象列表并将它们推入按字母顺序排列的新对象数组中呢?