JS学习——数组排序

JS学习——数组排序学习内容来源:JavaScript数组排序#JavaScript数组排序##数组排序sort()方法以字母顺序对数组进行排序.注意:在原数组上进行排序varfruits=["Banana","Orange","Apple&q

大家好,欢迎来到IT知识分享网。

学习内容来源:JavaScript 数组排序

JavaScript 数组排序

数组排序

sort() 方法以字母顺序对数组进行排序.

注意:在原数组上进行排序

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();     // 返回 ['Apple', 'Banana', 'Mango', 'Orange']

反转数组

reverse() 方法反转数组中的元素。

注意:在原数组上进行反转

var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();   // 返回 ['Mango', 'Apple', 'Orange', 'Banana']

数字排序

默认地,sort() 函数按照字符串顺序对值进行排序。可以向 sort() 方法传入一个比值函数来进行数字排序。

// 升序排序
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return a - b});  // 返回 [1, 5, 10, 25, 40, 100]

// 降序排序
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return b - a});  // 返回 [100, 40, 25, 10, 5, 1]

随机排序

sort() 方法传入一个可以返回值为(负、零或正值)的比值函数来进行随机排序

// Math.random()返回介于 0(包含) ~ 1(不包含) 之间的一个随机数:
var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 - Math.random()}); 

查找最高(或最低)的数组值

JavaScript 不提供查找数组中最大或最小数组值的内建函数。

通过数组排序后,可以通过索引值获取数组最高或最低值。但是,仅仅需要找到最高或最低值,对整个数组进行排序是效率极低的方法。

1、对数组使用 Math.max() 和 Math.min()

JavaScript apply() 方法允许传入一个数组作为参数。

// 传入一个 arr 数组,返回 arr 数组的最大值
function myArrayMax(arr) {
    return Math.max.apply(null, arr);
}
// 传入一个 arr 数组,返回 arr 数组的最小值
function myArrayMin(arr) {
    return Math.min.apply(null, arr);
}

2、自定义

// 此函数遍历数组,用找到的最高值与每个值进行比较
function myArrayMax(arr) {
    var len = arr.length
    var max = -Infinity;
    while (len--) {
        if (arr[len] > max) {
            max = arr[len];
        }
    }
    return max;
}

// 此函数遍历数组,用找到的最低值与每个值进行比较
function myArrayMin(arr) {
    var len = arr.length
    var min = Infinity;
    while (len--) {
        if (arr[len] < min) {
            min = arr[len];
        }
    }
    return min;
}

排序对象数组

即使对象拥有不同数据类型的属性,sort() 方法仍可用于对数组进行排序。解决方法是通过比较函数来对比属性值。

例子:

var cars = [
  { type: "Volvo", year: 2016 },
  { type: "Saab", year: 2001 },
  { type: "BMW", year: 2010 }
];

// 按照对象的 year 属性值的大小来升序排序(数字排序)
cars.sort(function(a, b){return a.year - b.year});
// 结果如下:
[
    {
        "type": "Saab",
        "year": 2001
    },
    {
        "type": "BMW",
        "year": 2010
    },
    {
        "type": "Volvo",
        "year": 2016
    }
]

// 按照对象的 type 属性值的大小来升序排序(字符串排序)
cars.sort(function(a, b){
  var x = a.type.toLowerCase();
  var y = b.type.toLowerCase();
  if (x < y) {return -1;}
  if (x > y) {return 1;}
  return 0;
});
// 结果如下:
[
    {
        "type": "BMW",
        "year": 2010
    },
    {
        "type": "Saab",
        "year": 2001
    },
    {
        "type": "Volvo",
        "year": 2016
    }
]

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/29884.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信