JS数组操作

添加和删除元素的方法
1.push & pop
        var arr1 = [1,2,3,4,5,6];
        // push:从尾部添加元素,返回元素的个数 / pop:从尾部删除元素,返回被删除的元素
        var result2 = arr1.push('aa');
        // 结果:arr1 = 1,2,3,4,5,6,aa result2 = 7(数组的个数)
        var result = arr1.pop();
        // 结果:arr1 = 1,2,3,4,5,6  result = aa(被抛弃的数组)
2.shift& unshift
        var arr1 = [1,2,3,4,5,6];

        // shift:从头部删除元素,返回被删除的元素 / unshift:从头部添加元素,返回添加元素后的个数

        result = arr1.shift();
        // 结果:arr1 = 2,3,4,5,6  result = 1(被抛弃的数组)

        result = arr1.unshift('aa');
        // 结果:arr1 = aa,2,3,4,5,6  result = 6(添加元素后数组的个数)
3. splice / slice
        /*
        aplice: 抛弃一些元素,在抛弃元素的位置插入一些元素,如果传入两个参数就只有删除没有追加,如果只有一个参数就是从该位置删除到最后 操作数组本身
                第一个参数:起始位置
                第二个参数:要删除元素的个数
                第三个参数及以后的参数:追加的新元素,从删除的位置开始追加
         */
        arr1 = [1,2,3,4,5];
        result = arr1.splice(1,2,3,4,5);
        // 结果:arr1 = 1,3,4,5,4,5  result = 2,3(被抛弃的数组)

        /*
        slice:截取范围  (左闭右开区间) 不操作数组本身
         */
        arr1 = [1,2,3,4,5];
        result = arr1.slice(2,5);
        // 结果:arr1 = 1,2,3,4,5  result = 3,4,5(截取到的数组)
concat & join & sort & reverse
        var arr1 = [1,2,3];
        var arr2 = [true, 4,5];

        result = arr1.concat(arr2);
        // 结果:result=1,2,3,true,4,5   arr1 = 1,2,3    arr2 = true,4,5
        // concat不操作数组本身,返回两个数组连接后的数组

        result = arr1.join('a');
        // 结果:result=1a2a3   arr1 = 1,2,3
        //不操作数组本身,在每个元素之间添加内容

        arr1 = [3,6,1,14,28,9];
        result = arr1.sort();
        // sort 正序排序, 按字母顺序排序
        // 结果:result=1,14,28,3,6,9   arr1 = 1,14,28,3,6,9

        arr1 = [3,6,1,14,28,9];
        result = arr1.reverse();
        // reverse: 将数组反转
        // 结果:result=9,28,14,1,6,3   arr1 = 9,28,14,1,6,3
ECMAScript5中Array特性
位置方法: indexOf & lastIndexOf
        var arr = [1,2,3,4,5,4,3,2,1];
        var index = arr.indexOf(4);
        // 结果: index = 3     返回第一次出现的位置
        index = arr.indexOf(4,4);
        // 结果: index = 5     返回从第一个参数位置开始第一次出现的位置

        index = arr.lastIndexOf(4);
        // 结果: index = 5     从后向前,返回第一次出现的位置
迭代方法: every & filter & forEach & some & map
        // every: 对数组的每一元素进行函数的运行,如果都返回true最后结果为true,如果有一个返回false则结果为false
        var result = arr.every(function(item, index, array){ // item:元素项,index:索引, array:数组本身
            return item > 2;
        });
        // 结果: false

        // some:和every相反,如果有一项返回true结果为true

        // filter :对数组的每一个元素进行函数运行,把返回函数运行的结果过滤出来
        result = arr.filter(function (item, index, array) {
           return item > 2;
        });
        // 结果: 3,4,5,4,3

        //fotEach: 循环数组的每一项,并执行一个方法
        arr.forEach(function (item, index, array) {
           item * 2;
        });

        // map :对数组的每一个元素进行函数运行,函数执行完毕后 把新的结果返回
        result = arr.map(function (item, index, array) {
            return item * 2;
        });
        // 结果: result = 2,4,6,8,10,8,6,4,2
缩小方法: reduce & reduceRight
        // reduce: 处理前一个值和当前值的关系
        var arr = [1,2,3,4,5,4,3,2,1];
        result = arr.reduce(function (prev,cur,index,array) {
        // 参数含义(前一个值, 当前值, 索引位置, 数组)
            return prev + cur; // 将前一个值和当前值相加
        });
        // 结果: result = 25

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

推荐阅读更多精彩内容