javascript - 根据第一个单词对对象数组进行排序

标签 javascript arrays sorting

我希望能够根据字符串中的第一个单词对 JavaScript 中的对象数组进行排序。目前我使用的排序函数使用字符串中的所有单词。

JSON 数据:

"awds": [
    {"awd":"adobe edge award"},
    {"awd":"besty"},
    {"awd":"c award"},
    {"awd":"awwward award"},
    {"awd":"desk award"},
    {"awd":"adobe edge award"},
    {"awd":"creative edge award"},
    {"awd":"snoogle edge award"},
    {"awd":"scuba edge award"},
    {"awd":"xidoe edge award"}
]

JavaScript:

var compareNames = function(a, b) {
    var nameA = a.awd.toLowerCase();
    var nameB = b.awd.toLowerCase();
    if (nameA > nameB) { return 1; }
    return 0;
};

当前输出:

adobe edge award
besty
c award
awwward award
desk award
adobe edge award
creative edge award
snoogle edge award
scuba edge award
xidoe edge award

期望的输出:

adobe edge award
adobe edge award
awwward award
c award
creative edge award
scuba edge award
snoogle edge award
xidoe edge award

最佳答案

var o = [
    {"awd":"adobe edge award"},
    {"awd":"besty"},
    {"awd":"c award"},
    {"awd":"awwward award"},
    {"awd":"desk award"},
    {"awd":"adobe edge award"},
    {"awd":"creative edge award"},
    {"awd":"snoogle edge award"},
    {"awd":"scuba edge award"},
    {"awd":"xidoe edge award"}
];

o.sort(function(a, b) {
    var nameA = a.awd.toLowerCase();
    var nameB = b.awd.toLowerCase(); 
    if(nameA === nameB) return 0; 
    return nameA > nameB ? 1 : -1;
});

console.log(o);

Demo

关于javascript - 根据第一个单词对对象数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14817635/

相关文章:

c - 如何计算数组中相似数字的数量

java - 用整数 1-10 填充数组,同时检查该整数是否已在数组中

javascript - 是否有黑盒方法来检测排序算法是否稳定?

c# - 自排序列表框

javascript - FireFox 插件-sdk 页面工作人员正则表达式

javascript - 如何使用vue从json api后端下载文件?

javascript - 获取空白输入字段的ID

javascript - 在关闭之前删除所有 <br> </p>

javascript - ReactJS 中的 "Legacy octal literals are not allowed in strict mode"是什么意思?

java - 如何修复 android 中 fragment 的排序问题和数据显示?