js数组先按类型排序再按金额由小到大排序
时间: 2024-09-23 12:06:52 浏览: 45
JavaScript对象数组如何按指定属性和排序方向进行排序
5星 · 资源好评率100%
在JavaScript中,如果你有一个数组,其中包含对象,每个对象都有`type`属性表示类型(如字符串或数字)和`amount`属性表示金额,你可以通过结合`Array.prototype.sort()`方法和自定义比较函数来实现这种混合排序。
首先,你需要创建一个比较函数,它接受两个参数,代表数组中的两个元素。这个函数会先检查`type`属性的值,如果它们相等,则进一步比较`amount`属性:
```javascript
function compareObjects(a, b) {
// 按照type属性排序,字符串转为小写以便比较
const typeSort = (a.type.toLowerCase() > b.type.toLowerCase()) ? 1 : -1;
// 如果type相同,按照amount属性从小到大排序
if (typeSort === 0) {
return a.amount - b.amount;
}
return typeSort;
}
```
然后,你可以将这个比较函数作为`sort()`方法的参数:
```javascript
const arr = [
{ type: 'A', amount: 5 },
{ type: 'B', amount: 10 },
{ type: 'A', amount: 3 },
{ type: 'C', amount: 8 },
{ type: 'B', amount: 7 }
];
arr.sort(compareObjects);
console.log(arr);
// 输出:[{ type: 'A', amount: 3 }, { type: 'A', amount: 5 }, { type: 'B', amount: 7 }, { type: 'B', amount: 10 }, { type: 'C', amount: 8 }]
```
阅读全文