如何按键排序"名称"? (按字母顺序排列)
它不起作用:
views.sort(function(a, b) {
var x = a.name.toLowerCase(),
y = b.name.toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
})
请帮帮我。
答案 0 :(得分:0)
您使用localeCompare
来比较字符串:
var views = {
viewA: { name: 'Build Plus' },
viewB: { name: 'Columns' },
viewC: { name: 'PowerPack Templates', other: 'field' },
viewD: { name: 'Blog Posts' }
};
var viewsArr = Object.keys(views).map(function (key) { return views[key]; });
viewsArr.sort(function(a, b) {
var x = a.name.toLowerCase(),
y = b.name.toLowerCase();
return x.localeCompare(y);
})
console.log(viewsArr);
更新:您正在接收带有键和值的对象。您需要先在数组中获取值,然后对它们进行排序。
请参阅Converting a JS object to an array using jQuery
在你的情况下,它将是:
var viewsArr = Object.keys(views).map(function (key) { return views[key]; });
// sort then
答案 1 :(得分:0)
您分享的代码完全没问题,以下是工作示例:
var arr = [
{name: 'b'},
{name: 'a'},
{name: 'x'},
{name: 'i'},
{name: 'l'}
]
arr.sort(function(a, b) {
var x = a.name.toLowerCase(),
y = b.name.toLowerCase();
return ((x < y) ? -1 : ((x > y) ? 1 : 0));
});
console.log(arr)
&#13;
有关sort
的更多信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort
问题可能出在其他地方,在代码中,你没有分享。
答案 2 :(得分:0)
获取数组中的对象值并进行排序。
const viewsArr = Object.values(views)
.sort((a, b) => a.name.lowerCase() > b.name.lowerCase());
答案 3 :(得分:-1)
这不是确切的代码,但在你身上你没有得到小组..
let groups = Object.keys(data)
.map(group => {
let records = Object.values(data[group])
.map(record => ({
name: record.name,
group,
}));
return records;
});
groups = [].concat(...groups);
return groups.sort((a, b) => {
return a.name.localeCompare(b.name);
});