数组的方法

1、join:将数组中所有的元素都转化为字符串拼接在一起,返回最后生成的字符串。

注意:不改变原数组


    let arr=[1,2,3,4];

    console.log(arr.join(","));    //1,2,3,4    join()和join(',')的结果都是一样的

    console.log(arr.join(""));    //1234

    console.log(arr.join());    //1,2,3,4

    console.log(arr.join("  "));  //1  2  3  4   

    console.log(arr);  //[1,2,3,4]

2、reverse:将数组中的元素颠倒顺序,返回逆序的字符串。

注意:原数组被改变


    let arr=[1,2,3,4];

    console.log(arr.reverse());  //[4,3,2,1]

    console.log(arr);    //[4,3,2,1]

3、sort:将数组中的元素排序后返回排序后的数组,undefined都是排在最后的

注意:原数组被改变

(1)给0-10数字排序,直接使用

let arr=[1,2,4,3,3];

console.log(arr.sort())  //[1,2,3,3,4]

console.log(arr)  //[1,2,3,3,4]

(2)给负数和大于一位数的排序

let arr=[22,1,4444,111,3];

console.log(arr.sort(function(a,b){

            return a-b

  }))        //[1,3,22,111,4444]

console.log(arr);    //[1,3,22,111,4444]

(3)给字母排序,大写字母排前面,小写字母排后面

let arr=["a","c","A","C","b","B"];

console.log(arr.sort());      //["A","B","C","a","b","c"]

console.log(arr);    //["A","B","C","a","b","c"]

4、concat:创建并返回一个新数组。新数组由原数组和concat()里面的参数组成,只能扁平化一维

注意:不改变原数组

let arr=[1,2,3];

let arr1=[5,6]

console.log(arr.concat(arr1))  //[1,2,3,5,6]

注意:concat只能扁平化一维,不能扁平化多维数组

let arr2=[5,6,[7,[8,9]]];

console.log(arr.concat(arr2))  //[1,2,3,5,6,[7,[8,9]]]

console.log(arr)    //[1,2,3,4]   

5、slice:返回指定数组的片段或者子数组,两个参数分别指是片段的开始和结束位置(按照索引来的,不包含结束的位置)

注意:不改变原数组

let arr=[1,2,3,4,5];

console.log(arr.slice(1,3))  //[2,3]

注意:只有一个数字代表就指取得这个索引和后面所有项

console.log(arr.slice(2));  //[3,4,5]

注意:开始参数小于结束参数,返回空数组(同为负数一样,单负数不行)

console.log(arr.slice(3,1))  //[]

console.log(arr.slice(-1,-3)) // []

注意:参数中含有负数,负数代表倒数,倒数第一位就是-1

console.log(arr,slice(2,-1))  //[3,4]

console.log(arr.slice(-3,-1))  //[3,4]

console.log(arr)    //[1,2,3,4,5]

6、splice:在数组中输入和删除元素的通用方法。返回的原数组是由删除元素组成的新数组,没有删就返回空数组[],可以删除、替换、插入

第一个参数是从哪个索引开始,第二个参数代表删除几项,后面的参数都代表从该索引添加元素

注意:原数组被改变


    删除:

    let  arr=[1,2,3,4,5];

    console.log(arr.splice(1,2));      //[1,4,5]

    console.log(arr);    //[2,3]  返回的是删除的元素

    注意:只有一个参数,表示删除从此索引往后的所有项(索引负数也可)

    console.log(arr.splice(1))    //[2,3,4,5]

    console.log(arr);    //[1]

    console.log(arr.splice(-2))    //[4,5]

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

    替换:

    let arr=[1,2,3,4,5];

    console.log(arr.splice(1,2,6,7));    //[1,6,7,4,5]  从索引为1开始删除2个数,并添加后面连个数

    console.log(arr)    //[2,3]

    删除:

    let arr=[1,2,3,4,5];

  console.log(arr.splice(1,0,6,7))    //[1,6,7,2,3,4,5]    从索引为1,删除0个,并添加后面的两个数

7、push:push在数组的末尾添加一个或者多个元素,返回新数组的长度。所以不能链式操作

注意:原数组被改变

let arr=[1,2,3,4];

console.log(arr.push(5));    //5

console.log(arr)    //[1,2,3,4,5]

8、pop:pop删除数组的最后一个元素,返回它删除的值元素

注意:原数组被改变


    let arr=[5,4,3,2,1];

    console.log(arr.pop());    //1

    console.log(arr)    //[5,4,3,2]

9、unshift:unshift是在数组头部添加一个或多个元素。如果一次性传入多个参数,多个参数按照按照原先的位置直接加到数组中。返回新数组的新数组的长度。

注意:原数组被改变

let arr=[1,2,3,4];

console.log(arr.unshift(5));    //5

console.log(arr);    //[5,1,2,3,4]

10、shift:删除数组的第一个元素,并返回删除的元素

注意:原数组被改变

let    arr=[1,2,3,4];

console.log(arr.shift());    //1

console.log(arr);    //[2,3,4]

11、toString:将数组数组中的每个元素转化为字符串。 输出用逗号分隔的字符串列表(可能数组的内部元素(数组)还会再次调用toString(),高维数组扁平化正是利用这点)

注意:原数组被改变

let arr=[1,2,3,4];

console.log(arr.toString())    //1,2,3,4

console.log(arr)    //[1,2,3,4]

12、forEach:该方法从头到尾遍历数组,为某个元素调用指定的函数。传递函数包括三个参数(数组元素、元素索引、数组本身),如果只关心数组元素的值,可以只传一个参数。

    var data = [1,2,3];

    var sum = 0;

    data.forEach(function(value,index,data){

          sum+=value;

    });

    console.log(sum); //6

13、map:将调用的数组的每个元素传递给指定的函数,并返回一个新数组,它包含该该函数的返回值

注意:传递给map的函数应该有返回值,返回的是新数组,不修改调用的数组。

(1)    let arr=[1,2,3,4,5];
    let arr1=arr.map(function(item,index){
            return item*2
    })
console.log(arr1)    //[2,4,6,8,10]

(2) let arr=[1,2,3,4,5];
        let arr1=[];
        arr.map(function(item,index){
            item=item*3;
            arr1.push(item)
        })
        console.log(arr1)    //[3,6,9,12,15]

14:filter() //过滤:返回的数组元素是调用的数组的一个子集,就传递的函数是用来做逻辑判定的,返回true,传给给判定函数的元素就是这个子集的成员。

let arr=[1,2,3,4];

let arr1=arr.filter(function(item,index){

    return item>2

})

console.log(arr1)    //[3,4]

15、every 当且仅针对数组中的所有元素调用判定的函数都返回true,它才返回true

some 至少有一个判定为true就返回true.

let arr=[1,2,3,4];

console.log(arr.every(function(item,index){

    return item>0

}))    //true

console.log(arr.some(function(item,index){

    return item>3

}))        //true

16、reduce:使用指定的函数将数组元素进行组合,生成一个单值。参数一是执行简化操作的函数,参数二是传给简化函数的初始值。

注意:一旦确认之后,就停止遍历数组了。

var data5 = [1,2,3,4,5];

var sum = data5.reduce(function(x,y){

  return x+y;

},10);    

console.log(sum);     //sum=10+1+2+3+4+5=25

var product = data5.reduce(function(x,y){

  return x*y;

},100);        

console.log(product); //product=100*1*2*3*4*5=12000

17、indexOf和lastIndexOf:搜索整个数组中具有给定值的位子,返回找到第一个元素的索引,如果没有找到就返回-1;indexOf()是从头找到尾,lastIndexOf()正好相反

注意:不接受函数作为参数,第一个参数是需要搜索的值,第二个参数是可选的,表示从哪里搜索,可以是负数,如果是负数,表示从后先前数第几个数,搜索还是一样从前向后搜

let    arr=[1,2,3,4,5];

console.log(arr.indexOf(2))        //1    返回的是索引

console.log(arr.indexOf(6))        //-1    未找到,返回-1

console.log(arr.indexOf(2,0))    //1    表示从第二个参数索引为0开始向后找,返回的是索引

console.log(arr.indexOf(2,2))    //-1    表示从第二个参数索引为2开始向后找,未找到返回-1

console.log(arr.indexOf(4,-2))    //3    -2表示从倒数第二个数向后找,返回的是索引

console.log(arr.indexOf(4,-1))    //-1    -1表示从倒数第一个数向后找,未找到返回-1

console.log(arr.lastIndexOf(1))    //0    lastIndexOf也是从后向前搜索,但返回的索引是不变

console.log(arr.lastIndexOf(5,-1))    //4   -1表示从倒数第1个数开始向前数,返回也是索引

console.log(arr.lastIndexOf(5,-2))    //-1  -2表示从倒数第2个数开始向前数,未找到返回-1

18、isArray:判断对象是否为数组

let arr=[1,2,3,4];

let obj={a:1,b:2};

console.log(Array.isArray(arr));    //true

console.log(Array.isArray(obj));    //false
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,590评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 86,808评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,151评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,779评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,773评论 5 367
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,656评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,022评论 3 398
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,678评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,038评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,659评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,756评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,411评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,005评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,973评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,053评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,495评论 2 343