JavaScript数组——经常使用数组要领汇总

本文纪录关于js数组的一些经常运用要领,汇集总结。

重要思绪:
1. 要领功用是什么
2. 通报的参数是什么
3. 返回值是什么
4. 本来的数组是不是转变

第一组:关于数组的增添、删除和修正

1.push 向数组末端增添新的内容,返回的是增加后新数组的长度,原有的数组转变了

    var arr=[10,11,12,13,14,15];
    var res=arr.push(16,17);
    console.log(res);    //8
    console.log(arr);    //[10,11,12,13,14,15,16,17]

2.unshift 向数组的开首增添新的内容,返回的是增加后新数组的长度,本来的数组也转变

    var res=arr.unshift(16,17);
    console.log(res);   //8

3.splice(n,m,x) 把原有数组中的某些项举行替代。(先删除,然后用x替代)。从所以n(包括n)最先,向后删除m个元素,用x替代,返回删除的数组

原有数组转变规律:
splice(0,0,x) 相当于unshiftsplice(arr.length,0,x) 相当于pushsplice(n,0,x) 向数组中心某个位置增加新的内容 从索引n最先,删除0个内容,把新增的内容x放在索引n的前面。返回的是一个空数组,原有数组转变n最先的索引splice(n,m) 删除数组指定项,从所以n(包括n)最先,向后删除m个元素 ,把删除的内容当作新数组返回,原有数组转变

    var res=arr.splice(2,0,"michael");  //在12背面增加“michael"
    console.log(arr);

4.pop 删除数组末了一个,返回的是删除的那一项,原有数组转变。shift 删除数组第一个,返回的是删除的那一项,原有数组转变

第二组:数组的查询和复制

5.slice(n,m) 从索引n(包括n)最先找到索引m(不包括m)处。把找到的内容作为一个新的数组返回,原有数组是不转变的。

javascript    var arr=[10,11,12,13,14,15];
    var res=arr.slice(1,4);
    console.log(res);   //[11, 12, 13]
    console.log(arr);   //[10, 11, 12, 13, 14, 15]
    slice(n) 从索引n(包括n)最先找到末端
    slice(0)  // slice()  将本来数组一成稳定的复制一份,数组clone

6. concat 本意是完成数组的拼接的 arr1.concat(arr2) 将数组arr2和数组arr1合并成新的数组,本来的数组也稳定

concat也可所以数组的克隆,本来的数组也转变(相当于slice(0))

    var arr1=[10,11,12,13,14,15];
    var arr2=[16,17];
    var res=arr1.concat(arr2);
    console.log(arr1);  //[10, 11, 12, 13, 14, 15]
    console.log(res);   //[10, 11, 12, 13, 14, 15, 16, 17]

第三组:将数组转化为我们的字符串

7.toString 把数组中的每一项拿出来,用逗号离隔,构成字符串,原有数组稳定

javascript     var arr=["name","michael","age","24"];
     var res=arr.toString();
     console.log(res);   //name,michael,age,24
     console.log(arr);   //["name", "michael", "age", "24"]

8.join(分隔符) 把数组中的每一项拿出来,用指定的分隔符离隔,原有数组稳定。

     var arr=["name","michael","age","24"];
     var res=arr.join("|");
     console.log(res);           //"name|michael|age|24"
     console.log(res.length);    //19
     console.log(arr);           //["name", "michael", "age", "24"]
     console.log(arr.length);    //4

例:完成数组中数字的乞降

     var arr=[10,11,12,13,14,15];
     var str=arr.join("+");      //"10+11+12+13+14+15"
     var total=eval(str);        //eval 将指定的字符串变成真正的额表达式实行
     console.log(total);         //75
     console.log(arr);           //[10, 11, 12, 13, 14, 15]

第四组:分列和排序

9.reverse 数组倒过来分列,原有数组转变。

     var arr=[10,11,12,13,14,15];
     console.log(arr);           //[10, 11, 12, 13, 14, 15]
     var res=arr.reverse();      //"10+11+12+13+14+15"
     console.log(res);         //[15, 14, 13, 12, 11, 10]

10.sort 数组的排序,能够完成由大到小(由小到大),原有的数组也变

直接写sort只能处置惩罚10之内的数字排序,处置惩罚10以上的我们须要通报一个参数,这个参数必需是函数

     var arr=[10,12,11,19,13,15,6];
     console.log(arr);           //[10, 12, 11, 19, 13, 15,6]
     var res=arr.sort();
     console.log(res);         //[10, 11, 12, 13, 15, 19, 6]

革新:

     var arr=[10,12,11,19,13,15,6];
     console.log(arr);           //[10, 12, 11, 19, 13, 15,6]
     var res1=arr.sort(function(a,b){return a-b;});   //完成由小到大
     console.log(res1);
     var res2=arr.sort(function(a,b){return b-a;})   //完成由大到小
     console.log(res2);         //[10, 11, 12, 13, 15, 19, 6]
     var arr=[10,12,11,19,13,6];
     console.log(arr);           //[10, 12, 11, 19, 13, 15,6]

     var res1=arr.sort(function(a,b){
     //a示意每一次轮回的时刻确当前项,b是背面的项
     //return a-b;当前项减去后一项,假如大于0,代表前面的比背面的大,如许的话就交流位置
     //冒泡排序:sort完成排序,就是遵照冒泡排序的头脑完成的
     console.log(a+"<====>"+b);
     return a-b;});   //完成由小到大

第五组:一些经常运用但不兼容

11.indexOf array1.indexOf(searchElement[, fromIndex])

fromIndex可选 用于最先搜刮的数组索引。 假如省略 fromIndex,则从索引 0 处最先搜刮。
数组中的 searchElement 的第一个婚配项的索引;假如未找到 searchElement,则为 -1。

     var arr=["hello","michael","good","study"];
     var p=arr.indexOf("mi",0);
     console.log(p);           //-1

12.forEach array1.forEach(callbackfn[, thisArg])

callbackfn 必选。 最多能够接收三个参数的函数。 关于数组中的每一个元素,forEach 都邑挪用 callbackfn 函数一次。

thisArg 可选。 callbackfn 函数中的 this 关键字可引用的对象。 假如省略 thisArg,则 undefined 将用作 this 值。

假如 callbackfn 参数不是函数对象,则将激发 TypeError 非常。

关于数组中涌现的每一个元素,forEach 要领都邑挪用 callbackfn 函数一次(采纳升序索引递次)。 将不会为数组中缺乏的元素挪用回调函数。

除了数组对象以外,forEach 要领可由具有 length 属性且具有已按数字编制索引的属性名的任何对象运用。

回调函数的语法:function callbackfn(value, index, array1):

参数参数申明
value数组元素的值
index数组元素的数字索引
array1包括该元素的数组对象
     // Create an array.
     var numbers = [10, 11, 12];

     // Call the addNumber callback function for each array element.
     var sum = 0;
     numbers.forEach(
     function addNumber(value) { sum += value; }
     );

     document.write(sum);
     // Output: 33

https://msdn.microsoft.com/zh-cn/library/ff679980(v=vs.94).aspx

13.map array1.map(callbackfn[, thisArg])

callbackfn 必选。 最多能够接收三个参数的函数。 关于数组中的每一个元素(不会对undefined元素挪用),map 要领都邑挪用 callbackfn 函数一次。

[, thisArg] 可选。 callbackfn 函数中的 this 关键字可引用的对象。 假如省略 thisArg,则 undefined 将用作 this 值。

返回值是一个新数组,个中的每一个元素均为关联的原始数组元素的回调函数返回值。假如 callbackfn 参数不是函数对象,则将激发 TypeError 非常。

关于数组中的每一个元素,map 要领都邑挪用 callbackfn 函数一次(采纳升序索引递次)。 将不会为数组中缺乏的元素挪用回调函数。除了数组对象以外,map 要领可由具有 length 属性且具有已按数字编制索引的属性名的任何对象运用。

回调函数的语法以下所示:function callbackfn(value, index, array1):

参数参数申明
value数组元素的值
index数组元素的数字索引
array1包括该元素的数组对象
    // Define the callback function.
     function AreaOfCircle(radius) {
     var area = Math.PI * (radius * radius);
     return area.toFixed(0);
     }

     // Create an array.
     var radii = [10, 20, 30];

     // Get the areas from the radii.
     var areas = radii.map(AreaOfCircle);

     document.write(areas);

     // Output:
     // 314,1257,2827
     */

本文纪录关于js数组的一些经常运用要领,汇集总结,若有不妥,望斧正。

    原文作者:MichaelXoX
    原文地址: https://segmentfault.com/a/1190000002913698
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞