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时返回正值,反之则返回负值,相等返回零。

 

posted @ 2020-09-15 09:45  FuloliyaLansfroya  阅读(123)  评论(0)    收藏  举报