用js定义两个一维数组,分别把数组中的元素按原始顺序、升序排序和降序排序输出,包含字母和数字
时间: 2024-05-02 13:21:06 浏览: 18
以下是示例代码:
```javascript
// 定义原始数组
var arr = [3, 'b', 2, 'a', 1];
// 定义升序数组
var ascArr = arr.slice().sort(function(a, b) {
if (typeof a === 'number' && typeof b === 'number') {
return a - b;
} else if (typeof a === 'number') {
return -1;
} else if (typeof b === 'number') {
return 1;
} else {
return a.localeCompare(b);
}
});
// 定义降序数组
var descArr = arr.slice().sort(function(a, b) {
if (typeof a === 'number' && typeof b === 'number') {
return b - a;
} else if (typeof a === 'number') {
return 1;
} else if (typeof b === 'number') {
return -1;
} else {
return b.localeCompare(a);
}
});
// 输出结果
console.log('原始数组:', arr); // [3, 'b', 2, 'a', 1]
console.log('升序数组:', ascArr); // [1, 2, 3, 'a', 'b']
console.log('降序数组:', descArr); // ['b', 'a', 3, 2, 1]
```
这里使用了`slice()`方法复制原始数组,避免直接对原始数组进行排序影响结果。排序方法中,首先判断元素的类型,如果是数字则按数字排序,如果是字符串则按字母排序,最后使用`localeCompare()`方法比较字符串大小。