最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

深入了解javascript数组重排序方法

来源:懂视网 责编:小采 时间:2020-11-27 20:23:31
文档

深入了解javascript数组重排序方法

深入了解javascript数组重排序方法:javascript数组的原生重排序方法1.数组 reverse 方法 (1)作用 颠倒数组中元素的位置 (改变原来的数组) (2)语法arr.reverse() //没有参数 (3)例子let myArray = [ 'one', 'two', 'three' ];
推荐度:
导读深入了解javascript数组重排序方法:javascript数组的原生重排序方法1.数组 reverse 方法 (1)作用 颠倒数组中元素的位置 (改变原来的数组) (2)语法arr.reverse() //没有参数 (3)例子let myArray = [ 'one', 'two', 'three' ];

javascript数组的原生重排序方法

1.数组 reverse 方法

(1)作用

颠倒数组中元素的位置 (改变原来的数组)

(2)语法

arr.reverse() //没有参数

(3)例子

let myArray = [ 'one', 'two', 'three' ]; 

myArray.reverse();

console.log(myArray); // ["three", "two", "one"]

(4)返回值
原数组的引用,不会新生成数组

let myArray = [ 'one', 'two', 'three' ]; 

let result = myArray.reverse();

result[2] = 2;

console.log(myArray); //["three", "two", 2]

console.log(result); //["three", "two", 2]

(5)缺点
不太灵活,只能颠倒数组

2.数组 sort 方法

(1)作用
sort() 会在适当的位置对数组的元素进行排序 (原数组会改变)

(2)语法

arr.sort();
arr.sort(compareFunction);

(3)参数
可选。用来制定按某中顺序进行排序的函数。

如果省略参数 例如 这样调用。

 arr.sort() //没有添加参数

sort() 函数会应用下面的参数,所以默认比较的是 Unicode 码

 //关于sort 的可选参数
 //如果没有设置参数,v8 中会自动生成一个参数
 if (!IS_CALLABLE(comparefn)) {
 //这是默认的参数值
 comparefn = function (x, y) {
 if (x === y) return 0;
 if (%_IsSmi(x) && %_IsSmi(y)) {
 return %SmiLexicographicCompare(x, y);
 }
 //在这里 会把参数全都转换为 Unicode 在进行比较
 x = TO_STRING(x);
 y = TO_STRING(y);
 if (x == y) return 0;
 else return x < y ? -1 : 1;
 };
 }

(4)原理
1.先设置参数,自己输入或者使用默认值

2.如果元素的个数小于2,直接返回

3.判断当前的对象是否是数组, 如果对象不是数组,会把原型链上的值复制到当前的数组,进行排序

 var arry = [1,2,3,4,2,5];
 var a = {};
 a.proto = arry;
 a.sort() // Array {0: 1, 1: 2, 2: 2, 3: 3, 4: 4, 5: 4}

4.把数组里面的undefined值都排在最后,

5.排序数组中所有不为undefind的值

6. 当 数组中元素的个数小于等于10的时,使用 InsertionSort 排序

 //comparefn 是sort 的参数
 //参数可以自己传入 ,或者使用v8 默认的值
 function InsertionSort(a, from, to) {
 for (var i = from + 1; i < to; i++) {
 var element = a[i];
 for (var j = i - 1; j >= from; j--) {
 var tmp = a[j];
 var order = comparefn(tmp, element);
 if (order > 0) {
 a[j + 1] = tmp;
 } else {
 break;
 }
 }
 a[j + 1] = element;
 }
 };

7.当 数组中元素的个数大于10时,使用快速排序

文档

深入了解javascript数组重排序方法

深入了解javascript数组重排序方法:javascript数组的原生重排序方法1.数组 reverse 方法 (1)作用 颠倒数组中元素的位置 (改变原来的数组) (2)语法arr.reverse() //没有参数 (3)例子let myArray = [ 'one', 'two', 'three' ];
推荐度:
标签: 方法 js 了解
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top