JavaScript数组详解(Array)(二)

今天整理了一些数组转字符串,字符串转数组的方法,还有改变数组和不改变数组的方法,希望和大家分享一下,可能不全,大家勿怪。

数组转字符串

    toString() 方法 (会改变原数组)

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.toString();
    console.log(arr1); //'1, 2, 3, 4, 5'  结果是字符串

    var arr = ['a','b','c','d','f']
    var arr1 = arr.toString();
    console.log(arr1); //'a,b,c,d,f'  结果是字符串

    var arr = ['a','b','c','d','f','undefined'] //'undefined'加引号 
    var arr1 = arr.toString();
    console.log(arr1); //'a,b,c,d,f,undefined'  结果是字符串,

    var arr = ['a', 'b', 'c', 'd', 'f', undefined] //  undefined不加引号,有 但为空
    var arr1 = arr.toString();
    console.log(arr1); //'a,b,c,d,f,'  结果是字符串, 最后一项为空

    var arr = ['a', 'b', 'c', 'd', 'f', undefined,null] //  undefined和null不加引号,有 但为空
    var arr1 = arr.toString();
    console.log(arr1); //'a,b,c,d,f,,'  结果是字符串, 但后面两项值为空

    toLocaleString() 方法 (会改变原数组)

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.toLocaleString();
    console.log(arr1); //'1, 2, 3, 4, 5 ' 结果是字符串

    var arr = ['a', 'b', 'c', 'd', 'f']
    var arr1 = arr.toLocaleString();
    console.log(arr1); //'a,b,c,d,f'  结果是字符串

    join  方法 (会改变原数组)

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.join('');
    console.log(arr1);   //'1, 2, 3, 4, 5'  结果是中间以逗号隔开的字符串

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.join('|');
    console.log(arr1);   //'1|2|3|4|5'  结果是中间被|隔开的字符串

    var arr = [1, 2, 3, 4, 5,undefined];
    var arr1 = arr.join('');
    console.log(arr1); //'12345'  结果是字符串,undefined 为空

    var arr = [1, 2, 3, 4, 5, null];
    var arr1 = arr.join('');
    console.log(arr1); //'12345'  结果是字符串 null 为空

字符串转数组

     split 方法 (会改变原数组)

    var str='123,456,789';
    var str1=str.split('');
    console.log(str1) // ["1", "2", "3", ",", "4", "5", "6", ",", "7", "8", "9"]

    var str='123,456,789';
    var str1=str.split(',');
    console.log(str1) // ["123", "456", "789"]

    var stra='wwwwwwwww';
    var strb=stra.split('');
    console.log(strb); //  ["w", "w", "w", "w", "w", "w", "w", "w", "w"]

    var stra='wwwwwwwww';
    var strb=stra.split('|');
    console.log(strb); //  ["w", "w", "w", "w", "w", "w", "w", "w", "w"]

改变原数组的方法

    splice 方法 改变原数组,向数组的中部插入元素

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

    var arr = [1, 2, 3, 4, 5, 6];
    var arr1 = arr.splice(-2);
    console.log(arr1); // [5, 6] 从下标为-1的元素开始,向前截取1个,包括包括下标为-1的元素本身

    var arr = [1, 2, 3, 4, 5, 6, 7, 8];
    var arr1 = arr.splice(0, -2);
    console.log(arr1); // 结果为空,因为下标没有负的,所以找不到

    var arr = ['qw', 'qwe', 'wer', 'we', 'www', 'ttt'];
    var arr1 = arr.splice(3, 0);
    console.log(arr1); // 结果为空,因为是从下标第三个开始,截取0个

    var arr = ['aa', 'bb', 'cc', 'dd', 'ee'];
    var arr1 = arr.splice(1, 0, 'sss', 'qwer');
    console.log(arr); // ["aa", "sss", "qwer", "ee"]  因为下标设的为0,所以没有截取,
                     //只是插入 'sss' 'qwer'

    var arr = ['aa', 'bb', 'cc', 'dd', 'ee'];
    var arr1 = arr.splice(1, 3,'sss','qwer');
    console.log(arr); // ["aa", "sss", "qwer", "ee"]  从下标1开始截取3个,并插入 'sss' 'qwer'

    var arr = ['aa', 'bb', 'cc', 'dd', 'ee', 'ff'];
    var arr1 = arr.splice(3);
    console.log(arr1); // ["dd", "ee", "ff"]  从下标为3的元素开始,一直往后截取,并返回新的数组


    slice() 方法     可提取字符串或者数组的某个部分,并以新的字符串或数组返回被提取的部分。

    var arr = [1, 2, 3, 4, 5];
    var arr2 = arr.slice(3);
    console.log(arr2); // [4, 5]  从下标为3的元素开始往后截取,返回截取的新数组,也可以是字符串

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

    var arr = ['1', '2', '3', '4', '5'];
    var arr2 = arr.slice(1, 0);
    console.log(arr2); // 没有,因为从下标为1的元素开始,截取0个

    var arr = ['a', 's', 'd', 'f', 'g'];
    var arr2 = arr.slice(0, 1);
    console.log(arr2); // ["a"]  从下标为0的元素开始,截取1个

    var arr = ['a', 's', 'd', 'f', 'g'];
    var arr1 = arr.slice(2, -1);
    console.log(arr1); //["d", "f"]  从下标为-1的元素开始,向前截取2个,不包括下标为-1的元素本身

    var arr = ['a', 's', 'd', 'f', 'g'];
    var arr1 = arr.slice(-1);
    console.log(arr1); //['g']  从下标为-1的元素开始,向前截取1个,包括包括下标为-1的元素本身



    pop 方法  改变原数组的length,删除新数组中的最后一个元素。

    var arr = [1, 2, 3, 4, 5, 6];
    var arr1 = arr.pop();
    console.log(arr); // [1, 2, 3, 4, 5]
    console.log(arr1); // 6 返回新数组的长度

    var arr = ['223', '232', '233'];
    var arr1 = arr.pop();
    console.log(arr); //["223", "232"]

    var arr = [2, 3, 4, 5, 6, 7, 8];
    var arr1 = arr.pop();
    console.log(arr); //[2, 3, 4, 5, 6, 7]

    var arr = [3, 4, 5, 6, 7];
    var arr1 = arr.pop();
    console.log(arr); //[3, 4, 5, 6]

    var arr = ['aaa', 'bbb', 'ccc'];
    var arr1 = arr.pop();
    console.log(arr); // ["aaa", "bbb"]


    push 方法  改变原数组的length,在新数组末尾添加一个或多个元素。

    var arr = [1, 2, 3, 4, 5, 6];
    var arr1 = arr.push('aa', 'bb');
    console.log(arr); //[1, 2, 3, 4, 5, 6, "aa", "bb"]
    console.log(arr1); // 8  返回新数组的长度

    var arr = [1, 2, 3, 4];
    var arr1 = arr.push(123);
    console.log(arr); //[1, 2, 3, 4, 123]

    var arr = [1, 2, 3, 4];
    var arr1 = arr.push('aaa');
    console.log(arr); //[1, 2, 3, 4, "aaa"]

    var arr = ['aa', 'bb', 'cc', 'dd'];
    var arr1 = arr.push('qw', 'er');
    console.log(arr); //["aa", "bb", "cc", "dd", "qw"]

    unshift 方法  在数组的前端添加任意个项并返回新数组的长度

    var arr = ['aa', 'bb', 'cc', 'dd'];
    var arr1 = arr.unshift('qw', 'er');
    console.log(arr1); // 6  新数组的长度length
    console.log(arr); // ["qw", "er", "aa", "bb", "cc", "dd"]  返回的新数组

    var arr = [1,2,3,4,5,6,7,8]
    var arr1 = arr.unshift('qw', 'er');
    console.log(arr1); // 10  新数组的长度length
    console.log(arr); // ["qw", "er", 1, 2, 3, 4, 5, 6, 7, 8]  把unshift后面的值推入新数组的最前端



    shift 方法 从数组的前端移除第一项下标为0的元素,减少数组的length值,然后返回被移除的项。

    var arr = [1,2,3,4,5,6,7,8]
    var arr1 = arr.shift();
    console.log(arr1); // 1  被删除的成为一个新的数组
    console.log(arr); // [2, 3, 4, 5, 6, 7, 8]  从数组的前端移除第一项下标为0的元素,
                      //减少数组的length值

    var arr = ['qq',2,3,4,5,6,7,8]
    var arr1 = arr.shift('qw', 'er');  //并不能插入数组元素
    console.log(arr1); // 'qq'  被删除的成为一个新的数组
    console.log(arr); // [2, 3, 4, 5, 6, 7, 8]  

    var arr = ['ss','ww','ee','rr','aa']
    var arr1 = arr.shift('qw', 'er');  //并不能插入数组元素
    console.log(arr1); // 'ss'  被删除的成为一个新的数组
    console.log(arr); // ["ww", "ee", "rr", "aa"]       

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

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    arr.reverse();
    console.log(arr);//[9, 8, 7, 6, 5, 4, 3, 2, 1]  顺序反转,返回值都是经过排序后的数组

    var arr = ['1', '2', '3', '4', '5', '6', '7', '8', '9'];
    arr.reverse();
    console.log(arr);//["9", "8", "7", "6", "5", "4", "3", "2", "1"]  顺序反转,
                      //返回值是经过排序后的数组

    var arr = ['qwqw', 'dasd', 'vxv', 'gdg', 'hfg', 'dfgr', 'dfgdfg', 'dfgdh', 'ku'];
    arr.reverse();
    console.log(arr);  // ["ku", "dfgdh", "dfgdfg", "dfgr", "hfg", "gdg", "vxv", "dasd", "qwqw"]
                                //  顺序反转,返回值是经过排序后的数组


    var arr=[1,2,3,4,5,6,7,8,9]
    function myReverse(array){
        var arr1=[];
        var len=array.length
        for(var i=0;i<len;i++){
            arr1.unshift(array[i]);
        }
        return arr1;
    }
    console.log(myReverse(arr)); // [9, 8, 7, 6, 5, 4, 3, 2, 1] 


    sort()方法   排序:调用每个数组项的toString()转型方法,然后比较得到的字符串,来确定顺序。

    var arr = [12, 23, 434, 54, 67, 3, 4, 0];
    arr.sort();
    console.log(arr); // [0, 12, 23, 3, 4, 434, 54, 67] 先比较第一位,再比较第二位,
                     //依次来确定大小顺序

    var arr = [12, 23, 434, 54, "a", 3, 'sss', 0];
    arr.sort();
    console.log(arr); // [0, 12, 23, 3, 434, 54, "a", "sss"] 先比较第一位,再比较第二位,
                       //依次来确定大小顺序

    var arr = [1, 23, 43, 44, 54, 564, 77, 88, 78];
    arr.sort(function (a, b) {
        return a - b;
        return b - a;
    })
    console.log(arr); // [1, 23, 43, 44, 54, 77, 78, 88, 564]

不改变原数组的方法

    indexOf() 方法 返回某个指定的字符串值或者某个数组元素值首次出现的位置(正向搜索)

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    console.log(arr.indexOf()); // -1  indexOf后面没有给值的时候返回的时候就找不到,返回-1

    var arr = ['a', 'b', 'c', 'd', 'a', 'c', 'd', 'd', 'a'];
    console.log(arr.indexOf('c')); // 2   找到c第一次出现的位置所对应的索引值



    var arr = ['2', '3', '1', '4', '3', '2', '4', '2', '1'];
    console.log(arr.indexOf('2', 3)); // 7   下标3开始往后'2'第一次出现的位置对应的下标

    lastIndexOf() 方法 返回某个指定的字符串值或者某个数组元素值最后出现的位置(逆向搜索),
    方法用法和indexOf()一样。

    var arr = ['a', 'b', 'c', 'd', 'a', 'c', 'd', 'd', 'a'];
    console.log(arr.lastIndexOf('c',4)); // 2  倒数第4个开始往前找 正向最后一次'c'出现的位置


    var arr = [1, 2, 3, 4, 3, 2, 4, 1, 3, 4, 2];
    console.log(arr.lastIndexOf(3, 5)); // 4  倒数第5个开始往前找 正向最后一次3出现的位置


    //concat 方法  连接多个数组,不改变原数组。
    var arr = ['123'];
    var arr1 = ['456'];
    var arr2 = ['789'];
    console.log(arr.concat(arr1, arr2)); //["123", "456", "789"]

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

    var arr = ['aaa', 'bbb', 'ccc'];
    var arr1 = ['ddd'];
    var arr2 = ['fff'];
    console.log(arr.concat(arr1, arr2)); // ["aaa", "bbb", "ccc", "ddd", "fff"] 

    every() 对数组的每一项运行给定函数,如果该函数对每一项都返回true,则返回true。否则返回false

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.every(function(item, index, array){
             return (item > 2);  }); 
    console.log(arr1);    //false 

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.every(function(item, index, array){
             return (item > 0);  }); 
    console.log(arr1);    //true 

    some() 方法 对数组的每一项运行给定函数,如果该函数对任一项返回true,则返回true。否则返回false

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.some(function (item, index, array) {
        return (item > 2);
    });
    console.log(arr1); //true 

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.some(function (item, index, array) {
        return (item > 0);
    });
    console.log(arr1); //true 

    var arr = [1, 2, 3, 4, 5];
    var arr1 = arr.some(function (item, index, array) {
        return (item > 5);
    });
    console.log(arr1); //flase 

    filter() 方法 对数组的每一项运行给定函数,返回该函数会返回true的项组成的数组。

    var arr = [1, 2, 3, 4, 5, 4, 5, 6, 2];
    var arr1 = arr.filter(function (item, index, array) {
        return (item >2);
    });
    console.log(arr1); // [3, 4, 5, 4, 5, 6]  大于2的数会组成一个新的数组

    var arr = [1, 2, 3, 4, 5, 4, 5, 6, 2];
    var arr1 = arr.filter(function (item, index, array) {
        return (item > 8);
    });
    console.log(arr1); // 没有 空数组  大于8的没有

    map() 方法  对数组的每一项运行给定函数,返回每次函数调用的结果组成的数组。(返回运算过后的新的数组)

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    var arr1 = arr.map(function (item, index, array) {
        return (item +1);
    });
    console.log(arr1); // [2, 3, 4, 5, 6, 7, 8, 9, 10] 数组中的每一项都加1,然后返回成为一个新的数组。

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9];
    var arr1 = arr.map(function (item, index, array) {
        return (item *10);
    });
    console.log(arr1); // [10, 20, 30, 40, 50, 60, 70, 80, 90] 数组中的每一项都乘以10,
                        //然后返回成为一个新的数组。

    forEach() 方法 对数组的每一项运行给定函数。该方法没有返回值。

    var arr = [1, 2, 3, 4, 5, 4, 3, 2, 1];
    var arr1 = arr.forEach(function (item, index, array) {
        //可以执行某些操作/运算
        console.log(arr1) //undefined      
        //不能返回值
    });

    reduce()  是从数组的第一项开始,逐个遍历到最后

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    var arr1 = arr.reduce(function (prev, cur, index, array) {
        return prev + cur;   //prev是前一项,cur是当前项
    });
    console.log(arr1); //55 数组元素的和

    var arr = [2312, 3234, 4342, 656, 76756, 8786, 978, 0898, 76867, 34534];
    var arr1 = arr.reduce(function (prev, cur, index, array) {
        return prev + cur;
    });
    console.log(arr1); //209363 数组元素的和

    reduceRight() 方法   是从数组的最后一项开始,逐个遍历到最前(跟reduce()相反,不过用法一样)

    var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
    var arr1 = arr.reduce(function (prev, cur, index, array) {
        return prev + cur;  //prev 变成最后一项,cur则成了倒数第二项
    });
    console.log(arr1); //55 数组元素的和

    var arr = [2312, 3234, 4342, 656, 76756, 8786, 978, 0898, 76867, 34534];
    var arr1 = arr.reduce(function (prev, cur, index, array) {
        return prev + cur;
    });
    console.log(arr1); //209363 数组元素的和

好了,今天就暂时到这里了,想知道更多的可以点个关注,

愚才疏学浅,故难免错漏,敬请海涵,还望不吝指出,万分感激!!!

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

推荐阅读更多精彩内容