JS的一些数据类型的方法和函数(二)
接着(一)的内容继续写下去。
一、数组实现栈和队列。
在之前的文章中,我写了栈和队列数据结构的代码,其实JS的数组提供了一些方法让数组可以做到栈和队列的事情,之前的那篇文章也是用到了这些方法。
1、push(),pop()
push()方法可以接收任何参数,把他们逐个添加到数组的末尾,并返回修改后的数组的长度。
pop()方法则是从数组的尾部移除最后一项,减少数组的length,返回被移除的项。
let arr=new Array(); console.log(arr.push('1','2')); // 2 console.log(arr); // ['1','2'] console.log(arr.pop()); // '2' console.log(arr.length); // 1 console.log(arr); // ['1']
上述代码便是这两个方法最基本的使用。
这两个方法就能够满足栈的后入先出的特点。
2.shift(),unshift()。
shift()方法与pop()不同的是他是移除数组的顶部第一项,其余与其相同。
unshift()方法则是向数组前端添加接收到的参数,并修改长度。填入顺序按参数输入顺序填入。
let arr=new Array(); console.log(arr.unshift('1','2')); // 2 console.log(arr); // ['1','2'] console.log(arr.shift()); // '1' console.log(arr) // ['2']
上述代码便是这两个方法最基本的使用。根据这些方法的功能,我们可以很容易的实现栈和队列。
二、重排序方法
JS中为数组定义了两个重排序的方法,分别为reverse()和sort()。
1.reverse()
reverse()方法是将一个数组项的顺序 翻转过来。
console.log([1,2,3,4,5].reverse()) // [5,4,3,2,1]
这个翻转是对数组进行翻转,会改变原数组。
2.sort()
sort()方法顾名思义就是排序方法,他会将数组内的每一项进行升序排序----在没有传入参数的情况下。
console.log([1,7,3,8,5,2].sort()) //[1, 2, 3, 5, 7, 8]
但当没有传入参数时可能会出现以下问题。
console.log([0,1,5,10,15].sort()) // [0, 1, 10, 15, 5]
这是因为sort()会根据测试字符串的结构改变数组的顺序。
这里虽然5小于10,但在进行字符串比较时,“10”则位于“5”的前面,于是数组的顺序就被修改了。
因此在使用sort()时会向sort()传入一个比较函数。
function compare(value1,value2){ if(value1<value2){ return -1; }else if(value1>value2){ return 1; }else{ return 0; } }
这个比较函数适用于大多数的数据类型。
function compare(value1,value2){ if(value1<value2){ return -1; // 负值 }else if(value1>value2){ return 1; // 正值 }else{ return 0; } } console.log([0,1,5,10,15].sort(compare)) // [0, 1, 5, 10, 15]
这样,sort()就不会出现问题了。当然我们也可以通过更改比较函数来改变排序方式。
function compare(value1,value2){ if(value1<value2){ return 1; }else if(value1>value2){ return -1; }else{ return 0; } } console.log([0,1,5,10,15].sort(compare)) // [15, 10, 5, 1, 0]
通过修改比较函数,便可以改变排序方式了。
还有一种更简单的比较函数的写法。
function compare(value1,value2){ return value2-value1 }
当value2>value1时返回正值,反之则返回负值,相等返回零。
 
                    
                
 
 
                
            
         浙公网安备 33010602011771号
浙公网安备 33010602011771号