js array sort排序

[

{
    name: '一年级',
    id: 'adas154q45',
},
{
    name: '三年级',
    id: 'bad231212',
},
{
    name: '二年级',
    id: 'vgs123124a',
},
{
    name: '五年级',
    id: 're4342341',
}, 
{
    name: '六年级',
    id: 'gfs1414s',
},
{
    name: '四年级',
    id: 'dsawq464ew',
}

]

现在数组的年级顺序是乱的, 使用sort 怎么才可以让数组按一年级 二年级 三年级 这样排序

阅读 3.3k
3 个回答
var data = [{
    name: '一年级',
    id: 'adas154q45',
},
{
    name: '三年级',
    id: 'bad231212',
},
{
    name: '二年级',
    id: 'vgs123124a',
},
{
    name: '五年级',
    id: 're4342341',
}, 
{
    name: '六年级',
    id: 'gfs1414s',
},
{
    name: '四年级',
    id: 'dsawq464ew',
}];



var grade = ['一', '二', '三', '四', '五', '六'];

// 使用数组中每一项对象的 name 属性进行排序
var compareByGrade = function(a, b) {
  return grade.indexOf(a.name[0]) - grade.indexOf(b.name[0]);
}
var result = data.sort(compareByGrade);
console.log(result);
.sort(function(a,b){
    var orderArr = ['一年级','二年级','三年级','四年级','五年级','六年级']
    return orderArr.indexOf(a.name) > orderArr.indexOf(b.name)
})
['十','九','八','七','六','五','四','三','二','一'].sort()
输出 Array(10) [ "一", "七", "三", "九", "二", "五", "八", "六", "十", "四" ]

所以你还是在数据里加一个 order 的字段用来辅助排序把

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题