数组对象排序(属性按照指定顺序排序)

 1   var arr1 = [{
 2             id: 8,
 3             name: 'a'
 4         }, {
 5             id: 10,
 6             name: 'b'
 7         }, {
 8             id: 12,
 9             name: 'c'
10         }, {
11             id: 6,
12             name: 'd'
13         }, {
14             id: 10,
15             name: 'm'
16         }];
17         function bubbleSort(array) {
18             /*给每个未确定的位置做循环*/
19             for (var unfix = array.length - 1; unfix > 0; unfix--) {
20                 /*给进度做个记录,比到未确定位置*/
21                 for (var i = 0; i < unfix; i++) {
22                     if (array[i].id > array[i + 1].id) {
23                         var temp = array[i];
24                         array.splice(i, 1, array[i + 1]);
25                         array.splice(i + 1, 1, temp);
26                     }
27                 }
28             }
29             return array;
30         }
31         console.log(bubbleSort(arr1));

 

var arr1 = [{
    id: 8,
    name: 'mp',
}, {
    id: 10,
    name: 'court'
}, {
    id: 12,
    name: 'mrox'
}, {
    id: 6,
    name: 'guhh'
}, {
    id: 10,
    name: 'ah'
}];
// 如果需要排序的属性是数字
arr1.sort((a, b) => a.id - b.id);
console.log(arr1)

// 如果是属性不是数字,并且需要按照指定的顺序排序
let order = ['mrox', 'ah', 'court', 'guhh', 'mp']; // 指定的顺序列表
arr1.sort((a, b) => order.indexOf(a.name) - order.indexOf(b.name));
console.log(arr1)

 

posted @ 2017-04-27 21:02  豆浆油条123  阅读(581)  评论(0编辑  收藏  举报