js 根据数组每项的某项大小进行排序
时间: 2023-07-22 21:43:04 浏览: 134
可以使用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 }
]
```
相关问题
使用js根据数组中的每一项首字母按照 0-9A-Za-z的排序规则进行排序
可以使用JavaScript的sort()方法进行排序。可以传入一个比较函数,该函数接受两个参数,表示要比较的数组中的两个元素。比较函数应该返回一个负数、零或正数,表示第一个元素小于、等于或大于第二个元素。
以下是一个根据数组中每一项的首字母按照0-9A-Za-z的排序规则进行排序的示例代码:
```javascript
const arr = ["apple", "Banana", "dog", "cat", "0", "1", "2", "Z", "a", "b", "c", "D", "E", "F"];
arr.sort((a, b) => {
const firstLetterA = a.charAt(0);
const firstLetterB = b.charAt(0);
const regex = /^[0-9a-zA-Z]/;
if (regex.test(firstLetterA) && regex.test(firstLetterB)) {
if (firstLetterA.toLowerCase() < firstLetterB.toLowerCase()) {
return -1;
} else if (firstLetterA.toLowerCase() > firstLetterB.toLowerCase()) {
return 1;
} else {
return 0;
}
} else if (regex.test(firstLetterA)) {
return -1;
} else if (regex.test(firstLetterB)) {
return 1;
} else {
return 0;
}
});
console.log(arr);
// ["0", "1", "2", "a", "Apple", "b", "Banana", "c", "cat", "dog", "D", "E", "F", "Z"]
```
该函数首先获取每个元素的首字母,并使用正则表达式检查它是否为0-9A-Za-z中的一个。如果两个元素的首字母都是0-9A-Za-z中的字符,则按照字母顺序进行排序。否则,如果一个元素的首字母是0-9A-Za-z中的字符,而另一个元素不是,则将具有首字母的元素放在前面。如果两个元素的首字母都不是0-9A-Za-z中的字符,则它们被视为相等。
js按照数组中每个对象的某一个键值值为字符串排序并去重
可以使用`Array.prototype.sort()`和`Array.prototype.filter()`方法来实现按照数组中每个对象的某一个键值字符串排序并去重的操作。
下面是一个示例代码:
```js
const arr = [
{ name: 'John', age: 30 },
{ name: 'Mary', age: 25 },
{ name: 'Lucy', age: 28 },
{ name: 'John', age: 35 },
{ name: 'Lucy', age: 27 }
];
const key = 'name'; // 按照 name 字段排序
const sortedArr = arr.sort((a, b) => {
if (a[key] < b[key]) {
return -1;
} else if (a[key] > b[key]) {
return 1;
} else {
return 0;
}
});
const uniqueArr = sortedArr.filter((item, index, arr) => {
return index === 0 || item[key] !== arr[index - 1][key];
});
console.log(uniqueArr);
// 输出:[
// { name: 'John', age: 30 },
// { name: 'Lucy', age: 28 },
// { name: 'Mary', age: 25 }
// ]
```
上面的代码中,首先使用`Array.prototype.sort()`方法按照指定的键值进行排序,然后使用`Array.prototype.filter()`方法过滤掉重复的项,最后得到一个按照指定键值排序并去重的新数组。
阅读全文