gpt4 book ai didi

javascript - 如何在javascript中按两个名称对数组进行排序?

转载 作者:行者123 更新时间:2023-11-28 12:05:57 24 4
gpt4 key购买 nike

我已经看到了如何按一个值(文本或数字)和两个数字(年份和某物的计数)对数组进行排序的问题和答案。

如何按升序对一个字符串进行排序,并按特殊顺序对另一个字符串进行排序?

这是数组中的一个对象

var stop = {
type: "S", // values can be S, C or H. Should ordered S, C and then H.
street: "SW Dummy St." // Should be sorted in ascending order
}

预期的最终结果应该是这样的

var data = [
{ type: 'S', year: 'SW Karp' },
{ type: 'S', year: 'SW Walker' },
{ type: 'C', year: 'SW Greth' },
{ type: 'C', year: 'SW Main' }
{ type: 'H', year: 'SW Dummy' }
];

最佳答案

Array.sort() 方法接受一个排序函数,它允许您自己实现排序。

data.sort(function (a, b) {
// Specify the priorities of the types here. Because they're all one character
// in length, we can do simply as a string. If you start having more advanced
// types (multiple chars etc), you'll need to change this to an array.
var order = 'SCH';
var typeA = order.indexOf(a.type);
var typeB = order.indexOf(b.type);

// We only need to look at the year if the type is the same
if (typeA == typeB) {
if (a.year < b.year) {
return -1;
} else if (a.year == b.year) {
return 0;
} else {
return 1;
}

// Otherwise we inspect by type
} else {
return typeA - typeB;
}
});

Array.sort()如果 a == b 则期望返回 0 , < 0 如果 a < b且 > 0 如果 a > b .

你可以在这里看到它的工作原理; http://jsfiddle.net/32zPu/

关于javascript - 如何在javascript中按两个名称对数组进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9618325/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com