JavaScript 数组排序

admin2年前 (2023-07-02)it知识364

sort() 方法以字母顺序进行排序

var  fruits = ["banana", "orange","apple"];
fruits.sort();

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

fruits.reverse();

默认的sort() 函数按照字符串顺序对值进行排序。

该函数很合适字符串("A"会排在"B之前")。


这里还有种比值函数

比较函数的目的是定义另一种排序顺序。

比较函数应该返回一个负数,零或正值,这取决于参数:

function(a, b){return a-b}

当sort()函数比较两个值时,会将值发送到比较函数,并根据所返回的值(负,零,正值)对这些值进行排序。

<button onclick="myFunction1()">以字母顺序排序</button>
<button onclick="myFunction2()">以数字升序顺序排序</button>
<button onclick="myFunction3()">以数字降序顺序排序</button>
<p id="demo"></p>
<script>
  var points = [40, 100, 1, 5, 25, 10];
  document.getElementById("demo").innerHTML = points;
  function myFunction1() {
       points.sort();
       document.getElementById("demo").innerHTML = points;
  }
  function myFunction2() {
       points.sort(function(a, b){ return a - b });
       document.getElementById("demo").innerHTML = points;
  }
  function myFunction3() {
       points.sort(function(a, b){ return b - a });
       document.getElementById("demo").innerHTML = points;
  }
</script>

随机排序数组 

var points = [40, 100, 1, 5, 25, 10];
points.sort(function(a, b){return 0.5 -  Math.random()});

对数组使用Math.max()

function myArrayMax(arr) {
  return Math.max.apply(null, arr);
}

Math.max.apply([1,2,3]) = Math.max(1,2,3)

对数组使用Math.min()

function myArrayMin(arr) {
          return Math.min.apply(null, arr);
}

Math.min.apply([1,2,3]) = Math.min(1,2,3)


排序对象数组

如果在数组中包含对象如何进行排序

var cars = [
{type: "Volvo", year: 2020},
{type: "Saab", year: 2021},
{type: "BMW", year: 2022}
];
cars.sort(function(a , b) {return a.year - b.year});

function displayCars() {
   document.getElementById("demo").innerHTML =
   cars[0].type + " " + cars[0].year + "<br>" +
   cars[1].type + " " + cars[1].year + "<br>" +
   cars[2].type + " " + cars[2].year;
}


比较字符串属性

var cars = [
{type: "Volvo", year: 2020},
{type: "Saab", year: 2021},
{type: "BMW", year: 2022}
];

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;
});

function displayCars() {
   document.getElementById("demo").innerHTML =
   cars[0].type + " " + cars[0].year + "<br>" +
   cars[1].type + " " + cars[1].year + "<br>" +
   cars[2].type + " " + cars[2].year;
}


标签: JavaScript

相关文章

JavaScript 数据类型

javascript 变量可以保存多种数据类型:数值、字符串值、数组、对象var x;   // x是undefined var leng...

javascript字符串方法和属性

javascript字符串方法和属性1.获取字符串的长度var text=""abcndfsdfdsfsd"; console.log(text.length...

JavaScript 数组方法

数组转换成字符串Javascript 方法 toString() 把数组转换为数组值(逗号分隔)的字符串。var fruits = ["banana"...

JavaScript 的核心是 ECMAScript

JavaScript 的核心是 ECMAScript,具体来说,它包括以下几个方面:语法:JavaScript 的语法包括语句结构、变量定义、函数定义、条件语句、循环语句等。ECMAScript 标准...

JavaScript 最新特征

JavaScript 的最新特征包括以下几个方面:类的私有变量:通过使用 # 符号,可以在类中定义私有变量,只能在类的内部访问,外部无法访问。空位合并操作符:使用 ?? 符号,可以在两项中任一项为 n...

vue-router导航守卫

vue-router的导航守卫可以用来在路由跳转过程中添加自定义逻辑,例如验证、权限控制、重定向等。导航守卫可以分为三种:全局导航守卫、路由独享守卫和组件内的守卫1。全局导航守卫可以使用router....

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。