JS基础篇--JS数组经常使用方法汇总

转换方法

全部对象都具备toLocaleString()toString()valueOf()方法。其中调用数组toString方法会返回以数组中的每一个值的字符串形式拼接而成的一个以逗号分割的字符串。javascript

而调用valueOf()方法返回的仍是数组。java

var colors = ['red','blue','green'];
console.log(colors.toString());
console.log(colors.valueOf());
console.log(colors.toLocaleString());

获得的结果如图所示:
图片描述ios

另外toLocaleString()方法常常会返回跟toString()valueOf()方法相同的值。但也不是总如此。当调用数组的toLocaleString()方法时,它也会建立一个数组值的以逗号分割的字符串。而与前两个方法惟一不一样的是,这一次为了取得每一项的值,调用的每一项的toLocaleString()方法,而不是toString()方法。以下面例子:数组

var person1 = {
    toLocaleString: function(){
        return "Nikolaos";
    },
    toString: function(){
        return "Nicholaos";
    }
}
var person2 = {
    toLocaleString: function(){
        return "Grigorios";
    },
    toString: function(){
        return "Greg";
    }
}

var person = [person1,person2];
alert(person); //Nicholaos,Greg
alert(person.toString()); //Nicholaos,Greg
alert(person.toLocaleString());//Nikolaos,Grigorios

说明:因为alert()要接收字符串参数,全部它会在后台调用toString()方法,获得跟直接调用toString()方法同样的结果。函数

数组继承的toLocaleString()toString()valueOf()方法,在默认状况下都会以逗号分割的字符串的形式返回数组项。可使用join()方法,则可使用不一样的分隔符来构建这个字符串。spa

join()方法
join() 方法用于把数组中的全部元素放入一个字符串。元素是经过指定的分隔符进行分隔的。返回一个字符串。code

var colors = ['red','blue','green'];
console.log(colors.join(',')); //red,blue,green
console.log(colors.join('||')); //red||blue||green

栈方法(后进先出)

ArrayObj.push()方法

ArrayObj.pop()方法

ArrayObj.push():就是向数组末尾添加新的元素,返回的是数组新的长度。
ArrayObj.pop():就是向数组中删除数组最后一个元素而且返回该元素。若是数组为空就返回undefined。对象

队列方法(先进先出)

ArrayObj.shift()

ArrayObj.unshift()

ArrayObj.shift():方法用于把数组中的第一个元素删除,并返回第一个元素的值。
若是数组是空的,则shift() 方法不进行任何操做,返回undefined。请注意,该方法不建立新数组,而是直接修改原来的数组。该方法会改变数组的长度。blog

ArrayObj.unshift() :该方法可把它的参数顺序添加到数组的头部。它直接修改了数组,而不是建立一个新的数组。返回的是新数组的长度。
unshift()在IE6,IE7下,数据有添加成功,但返回值倒是undefined.排序

转换方法

join()方法

join() 方法用于把数组中的全部元素放入一个字符串。元素是经过指定的分隔符进行分隔的。返回一个字符串

重排序方法

reverse()方法

sort()方法

reverse()方法会对反转数组项的顺序。

var values = [1, 2, 3, 4, 5];
values.reverse();
alert(values);  //5,4,3,2,1

这里数组的初始值及顺序是一、二、三、四、5。而调用数组的reverse()方法后,其值的顺序变成了五、四、三、二、1。

sort()方法按升序排列数组——即最小的值位于最前面,最大的值排在最后面。为了实现排序,sort()方法会调用每一个数组项的toString()转型方法,而后比较获得字符串,以肯定如何排序。即便数组中的每一项都是数组,sort()方法比较的也是字符串,以下所示:

var values = [0, 1, 5, 10, 15];
values.sort();
alert(values);  //0,1,10,15,5

种排序方式在不少状况下都不是最佳方案。所以sort()方法能够接受一个比较函数做为参数,以便咱们指定那个值位于那个值的前面。

比较函数接受两个参数,若是第一个参数应该位于第二个以前则返回一个负数,若是两个参数相等,则返回0,若是第一个参数位于第二个以后则返回一个正数。如下就是一个简单的比较函数:

function compare(value1, value2) {
   if (value1 < value2) {
       return -1;
   } else if (value1 > value2) {
       return 1;
   } else {
       return 0;
   }
}

这个比较函数可使用于大多数数据类型,只要将其做为参数传递给sort()方法便可,以下面这个例子所示:

var values = [0, 1, 2, 5, 10, 15];
values.sort(compare);
alert(values);  //0,1,5,10,15

在将比较函数传递到sort()方法以后,数值仍然保持了正确的升序。固然,也能够经过比较函数产生降序排序的结果,只要交换比较函数返回的值便可:

function compare(value1, value2) {
   if (value1 < value2) {
       return 1;
   } else if (value1 > value2) {
       return -1;
   } else {
       return 0;
   }
}
var values = [0, 1, 2, 5, 10, 15];
values.sort(compare);
alert(values);  //15,10,5,1,0

reverse()和sort()方法会返回值是通过排序以后的数组。

对于数值类型或者其valueOf方法会返回数值类型的对象类型,可使用一个更简单的比较函数。这个函数只要用第二个值减第一个值便可:

function compare(value1, value2) {
   return value2 - value1;
}

因为比较函数经过返回一个小于零、等于零或大于零的值来影响排序结果,所以减法操做就能够适当处理全部状况。

操做方法

concat()方法

slice()方法

splice()方法

concat() 方法用于链接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被链接数组的一个副本。

<script type="text/javascript">

var a = [1,2,3];
document.write(a.concat(4,5));

</script>

输出的结果:1,2,3,4,5

slice(start,end)方法
start 必需。规定从何处开始选取。若是是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片段结束处的数组下标。若是没有指定该参数,那么切分的数组包含从 start 到数组结束的全部元素。若是这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
返回值:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。

splice() 方法用于插入、删除或替换数组的元素
语法:arrayObject.splice(index,howmany,element1,.....,elementX)

index 必需。规定从何处添加/删除元素。
该参数是开始插入和(或)删除的数组元素的下标,必须是数字。

howmany 必需。规定应该删除多少元素。必须是数字,但能够是 "0"。
若是未规定此参数,则删除从 index 开始到原数组结尾的全部元素。

element1 可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
elementX 可选。可向数组添加若干元素。

返回值:若是从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
说明:splice() 方法可删除从 index 处开始的零个或多个元素,而且用参数列表中声明的一个或多个值来替换那些被删除的元素。

下面简要归纳一下slice()与splice()方法

slice(start, end); slice()方法返回从参数指定位置开始到当前数组末尾的全部项。若是有两个参数,该方法返回起死和结束位置之间的项,但不包括结束位置的项。

var colors = ["red", "green", "blue", "yellow", "purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);

console.log(colors2); // green, blue, yellow, purple
console.log(colors3); // green, blue, yellow

splice()有删除,插入,替换的功能

删除
须要两个参数,要删除的第一项的位置和要删除的项数。

var colors = ["red", "green", "blue"];
var removed = colors.splice(0,1);
console.log(colors); // greeen, blue
console.log(removed); // red

插入
须要三个参数:起始位置、0(要删除的项数)和要插入的项

var colors = ["red", "green", "blue"];
var removed = colors.splice(1,0,"yellow", "orange");
console.log(colors); // ["red", "yellow", "orange", "green", "blue"]
console.log(removed); // 返回空

替换
须要三个参数:起始位置、要删除的项数和要插入的任意数量的项。

var colors = ["red", "green", "blue"];
var removed = colors.splice(1,1,"yellow", "orange");
console.log(colors);  // ["red", "yellow", "orange", "blue"]
console.log(removed); // ["green"]
相关文章
相关标签/搜索