js的数组方法整理

2018-06-24 00:51:35来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

slice

从已有的数组中返回选定的元素。该方法不会修改数组,而是返回一个子数组。

语法:arr.slice(start,end)

     start: 必须,规定从何处开始选取。如果是负数,就是从尾部开始算起的位置(-1指最后一个元素,-2指倒数第二个元素);

     end:   可选,规定从何处结束选取。如果没有指定,则切分的数组包含从start到数组结束的所有元素。

示例:

1   var arr = [0, 4, 5, 4, 7, 6, 9];
2   arr.slice(2, 4);    //[5,4]
3   arr.slice(-3, 6);  //[7,6]
4   arr.slice(5);  //[6,9]

可以使用slice快速将伪数组转为数组:

function f() {
    var arr = Array.prototype.slice.call(arguments);
}

splice

向数组中添加或删除项目,并返回被删除的项目。该方法会改变原来的数组。

语法:arr.splice(index,howmany,item1,item2,...,itemX)

  index: 必需。规定添加或删除的位置,使用负数可从数组结尾处规定位置;

  howmany: 必需。要删除的数量。如果设置为0,则不会删除项目。

  itemX: 可选。向数组添加的新项目。

示例:

1     var arr = [0, 4, 5, 4, 7, 6, 9];
2     console.log(arr.splice(2, 2));    //[5,4]
3     console.log(arr);   //[0, 4, 7, 6, 9]
4     console.log(arr.splice(2, 0, 8, 10));   //[]
5     console.log(arr);   //[0, 4, 8, 10, 7, 6, 9]

join

将所有元素放入一个字符串,元素是通过指定的分隔符进行分隔的。返回字符串。该方法不会修改原数组。

语法:arr.join(separator)

  separator: 可选,指定要使用的分隔符。如果省略,则使用逗号作为分隔符。

示例:

1     var arr = [0, 1, 2, 3];
2     console.log(arr.join());    //'0,1,2,3'
3     console.log(arr.join('.')); //'0.1.2.3'

push

向数组的末尾添加或删除一个或多个元素,并返回数组的新长度。该方法会改变原数组。

语法:arr.push(newelement1,newelement2,...,newelementX)

  newelement1: 必需。要添加到数组的第一个元素。

  newelementX: 可选,可添加多个元素。

示例:

1     var arr = [0, 1, 2, 3];
2     console.log(arr.push(1));   //5
3     console.log(arr);   //[0, 1, 2, 3, 1]

pop

删除数组的最后一个元素,并返回它删除的元素的值。如果数组已经是空,则不改变数组,并返回undefined。该方法会改变原数组。

语法:arr.pop()

示例:

1     var arr = [0, 1, 2, 3];
2     console.log(arr.pop()); //3
3     console.log(arr);   //[0, 1, 2]

shift

删除数组的第一个元素,并返回它删除元素的值。如果数组已经是空,则不改变数组,并返回undefined。该方法会改变原数组。

语法:arr.shift()

示例:

1     var arr1 = [0, 1, 2, 3];
2     console.log(arr1.shift()); //0
3     console.log(arr1);   //[1, 2, 3]
4 
5     var arr2 = [];
6     console.log(arr2.shift());   //undefined
7     console.log(arr2);   //[]

unshift

向数组的开头添加或删除一个或多个元素,并返回数组的新长度。该方法会改变原数组。

语法:arr.unshift(newelement1,newelement2,...,newelementX)

  newelement1: 必需。要添加到数组的第一个元素。

  newelementX: 可选,可添加多个元素。

示例:

1     var arr = [0, 1, 2, 3];
2     console.log(arr.unshift(4, 5));  //6
3     console.log(arr);   //[4, 5, 0, 1, 2, 3]

reverse

颠倒数组中元素的顺序。该方法会改变原来数组。

语法:arr.reverse()

示例:

1     var arr = [0, 1, 2, 3];
2     console.log(arr.reverse()); //[3, 2, 1, 0]
3     console.log(arr);   //[3, 2, 1, 0]

sort

对数组的元素进行排序。该方法会改变原数组。

语法:arr.sort(sortby)

  sortby: 可选。规定排序顺序。必须是比较函数,有两个参数a和b,如果a小于b,在排序后a应该出现在b之前(从小到大排),则返回一个小于0的值。如果没有参数,则按照字符编码顺序对数组中的元素进行排序。

示例:

 1     var arr1 = ['a', 'b', 'z', 'A', 'Z'];
 2     console.log(arr1.sort());    //["A", "Z", "a", "b", "z"]
 3     console.log(arr1);  // ["A", "Z", "a", "b", "z"]
 4 
 5     var arr2 = [1, 5, 10, 1000];
 6     console.log(arr2.sort());   //[1, 10, 1000, 5]
 7 
 8     function sortNumber1(a, b) {
 9         return a - b;
10     }
11     function sortNumber2(a, b) {
12         return b - a;
13     }
14     console.log(arr2.sort(sortNumber1));    //[1, 5, 10, 1000]
15     console.log(arr2.sort(sortNumber2));    //[1000, 10, 5, 1]

concat

连接两个或多个数组。返回被连接数组的一个副本。该方法不会修改原来的数组。

语法:arr.concat(arrX,arrX,...,arrX)

  arrX: 必需。可以是具体的值,也可以是数组对象,可以是任意多个。

示例:

 1     var arr1 = [1, 2, 3];
 2     console.log(arr1.concat(4, 5));  //[1, 2, 3, 4, 5]
 3     console.log(arr1);   //[1, 2, 3]
 4 
 5     var arr2 = [4, 5];
 6     console.log(arr1.concat(arr2)); //[1, 2, 3, 4, 5]
 7 
 8     var arr3 = [6, [7, 8]];
 9     console.log(arr1.concat(arr2, arr3));   // [1, 2, 3, 4, 5, 6, [7, 8]]
10     console.log(arr1.concat(arr2, 6, [7, 8]));  //[1, 2, 3, 4, 5, 6, 7, 8]

 map

返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。

语法:arr.map(function(currentValue, index, arr), thisValue)

  function(currentValue,index,arr):必须。函数,数组中的每个元素都会执行这个函数。

    函数参数:currentValue:必须。当前元素的值。

         index:可选。当前元素的索引值。

         arr:可选。当前元素属于的数组对象。也就是数组本身。

  thisValue:可选。对象作为该执行回调时使用,传递给函数,用做“this”的值。

示例:

求数组中每个元素的平方根。

var numbers = [1, 4, 9];
var roots = numbers.map(Math.sqrt);
console.log(roots); //[1, 2, 3]

 反转字符串

var str = '12345';
console.log(Array.prototype.map.call(str, function (x) {
    return x;
}).reverse().join('')); //'54321'

通常情况下,map方法中回调函数只需要接受一个参数,就是正在被遍历的数组元素本身。但这并不意味着只给回调函数传了一个参数。例如:

console.log(['1', '2', '3'].map(parseInt)); //[1, NaN, NaN]
//上面的语句并没有返回所期望的[1, 2, 3],

//通常使用parseInt时只需要传递一个参数,但实际上可以有两个参数,第二个参数是进制数。
//map方法在调用回调函数时,会给它传递三个参数:当前正在遍历的元素,元素索引和原数组。
//parseInt会把第三个参数忽视,但第二个参数会被当成进制数,从而返回了NaN

//如果想得到所期望的结果,可以这样写
function returnInt(ele) {
    return parseInt(ele, 10);
}
['1', '2', '3'].map(returnInt);    //[1, 2, 3]

//也可以使用简单的箭头函数
['1', '2', '3'].map(str=>parseInt(str));    //[1, 2, 3]

兼容性:IE9以下不支持。

兼容性解决代码:

if (!Array.prototype.map) {
    Array.prototype.map = function (callback, thisArg) {
        //判断callback是否为函数类型
        if (Object.prototype.toString.call(callback) != '[object Function]') {
            throw new TypeError(callback + 'is not a function');
        } else {
            if (this == null) {   //判断map方法的调用者是否存在
                throw new TypeError('this is null or not defined')
            } else {
                var arr = Object(this); //调用map方法的数组
                var len = arr.length >>> 0; //数组长度
                var k = 0;
                var mappedArr = new Array(len); //map方法新产生的数组
                while (k < len) {   //遍历原数组,调用回调函数
                    if (k in arr) {
                        mappedArr[k] = callback.call(thisArg, arr[k], k, arr);
                    }
                    k++;
                }
                return mappedArr;
            }
        }
    }
}

toString

将数组转换为字符串并返回结果。返回值与没有参数参与的join()方法返回的字符串相同。

语法:arr.toString()

示例:

1     var arr=[1,2,3];
2     console.log(arr.toString());    //'1,2,3'

valueOf

返回数组对象的原始值。

语法:arr.valueOf()

示例:

1     var arr=[1,2,3];
2     console.log(arr.valueOf());    //[1, 2, 3]

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:表格滚动分页

下一篇:javaScript字符串方法