js 如何根据数组 多个值进行来排序
时间: 2023-12-21 16:06:37 浏览: 31
可以使用 JavaScript 的 Array.sort() 方法,传入一个排序函数作为参数,该函数需要比较两个元素的大小关系并返回一个值,可以使用数组中多个值进行比较。以下是一个例子:
```javascript
// 根据年龄和姓名进行排序
const persons = [
{ name: 'Alice', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'Charlie', age: 20 },
{ name: 'David', age: 30 },
{ name: 'Emily', age: 25 }
];
persons.sort((a, b) => {
if (a.age !== b.age) {
return a.age - b.age; // 按年龄升序排序
} else {
return a.name.localeCompare(b.name); // 年龄相同按姓名升序排序
}
});
console.log(persons);
```
输出结果:
```
[
{ name: 'Charlie', age: 20 },
{ name: 'Alice', age: 25 },
{ name: 'Emily', age: 25 },
{ name: 'Bob', age: 30 },
{ name: 'David', age: 30 }
]
```
相关问题
js数组对象根据属性值进行排序
你可以使用JavaScript的`Array.prototype.sort()`方法来对数组对象根据属性值进行排序。这个方法接受一个比较函数作为参数,用于指定排序的规则。
下面是一个示例,假设你有一个包含多个对象的数组,每个对象都有一个`name`属性:
```javascript
var arr = [
{ name: 'John', age: 25 },
{ name: 'Adam', age: 30 },
{ name: 'Bob', age: 20 }
];
```
如果你想根据`name`属性进行排序,你可以这样写比较函数:
```javascript
arr.sort(function(a, b) {
var nameA = a.name.toUpperCase(); // 不区分大小写
var nameB = b.name.toUpperCase();
if (nameA < nameB) {
return -1;
}
if (nameA > nameB) {
return 1;
}
return 0; // 如果相等,则不改变顺序
});
```
现在,`arr`数组将根据`name`属性的字母顺序进行排序。
你也可以根据其他属性进行排序,只需要在比较函数中修改相应的代码即可。
js 根据数组每项的某项大小进行排序
可以使用JavaScript的`sort`方法来实现根据数组每项的某项大小进行排序。`sort`方法可以接收一个回调函数作为参数,该回调函数可以定义排序的规则。假设我们有一个包含多个对象的数组,每个对象都有一个`size`属性,我们可以按照`size`属性的大小进行排序,示例代码如下:
```javascript
const arr = [
{ name: 'apple', size: 10 },
{ name: 'banana', size: 7 },
{ name: 'orange', size: 5 },
{ name: 'pear', size: 15 },
];
arr.sort((a, b) => a.size - b.size);
console.log(arr);
```
上述代码中,我们使用了一个箭头函数作为`sort`方法的参数,该箭头函数接收两个参数`a`和`b`,表示要比较的两个元素。函数体中,我们返回`a.size - b.size`,表示按照`size`属性的大小进行升序排序。排序后,数组中的元素为:
```javascript
[
{ name: 'orange', size: 5 },
{ name: 'banana', size: 7 },
{ name: 'apple', size: 10 },
{ name: 'pear', size: 15 }
]
```