数组中的操作

数组中的方法要关注其:用法 参数 返回值  是否改变原有数组

 

1.添加元素(返回值是新的长度)

  • unshift:从数组头部添加一个或多个元素
var nums = [3,4,5];
    nums.unshift(1,2);
    print(nums); // 1,2,3,4,5

 

  • push:将一个或多个元素添加到数组尾部
var nums = [1,2,3];
    nums.push(4,5);
    console.log(nums);   //[1, 2, 3, 4, 5]

 

  • splice:splice[deletePos,0,[item1,item2,item3....]]将一个或多个元素添加到数组的指定位置,插入位置后面的元素自动后移
var nums = [1,2,3,7,8,9];
var newElements = [4,5,6];
nums.splice(3,0,newElements);
print(nums); // 1,2,3,4,5,6,7,8,9

 

2.删除(返回值是删除的元素)

  • pop:移除最后一个元素
var nums = [1,2,3,'Amy','Leo'];
    nums.pop();
    console.log(nums);   //[1,2,3,'Amy']

 

  • shift:删除最前一个元素
var nums = [1,2,3,'Amy','Leo'];
    nums.shift();
    console.log(nums);   //[2,3,'Amy','Leo']

 

  • splice:splice[deletePos,deleteCount]删除从指定位置deletePos开始的deleteCount个元素
var nums = [1,2,3,'Amy','Leo',55,3];
    nums.splice(1,3);
    console.log(nums);   //[1, "Leo", 55, 3]

 

3.截取合并

  • splice:截取一个数组,创建一个新数组
 var itDiv = ['Mike','Clayton','John','Marry','Raymon'];
 var dmpDept = itDiv.splice(2,2);
 var cisDept = itDiv;  
 console.log(dmpDept);  // ['John','Marry']
 console.log(cisDept);  //['Mike','Clayton','Raymon']

 

  • slice:slice[start,[end]]返回数组的一部分,不包括end对应的元素,如果省略end,将复制start之后的元素
var num1 = [1,2,3,4,55,3];
var num2 = num1.slice(1,4);
console.log(num2);  //[2, 3, 4]

 

  • concat:可以合并多个数组
var num1 = [1,2,3,4,55,3];
var num2 = ['Marry','Anda','Amy','Leo','Jeo']; console.log(num1.concat(num2)); //[[1, 2, 3, 4, 55, 3, "Marry", "Anda", "Amy", "Leo", "Jeo"]

 

4.数组拷贝

  • arr.slice(0)/arr.splice(0)   //返回数组的拷贝数组,一个新数组
  • arr.concat() //返回数组的拷贝数组,一个新数组
var num1 = [1,2,3,4,55,3];
var num2 = num1.slice(0);
console.log(num2);  //[1,2,3,4,55,3]
console.log(num1 == num2); //false
    
var num3 = num1.concat();
console.log(num3);  //[1,2,3,4,55,3]
console.log(num1 == num3); //false

 

5.数组元素字符串化

    arr.join(separator):返回字符串,这个字符串由数组中的所有元素组成,中间用separator链接

var num1 = [1,2,3,4,55,3];
console.log(num1.join(' '));   //1 2 3 4 55 3 用空格隔开
console.log(num1.join('-'));   //1-2-3-4-55-3 用'-'隔开

 

6.替换

    splice:splice(deletePos,deletCount,item1,...,itemdeleteCount)从指定位置deletePos开始,替换掉指定数目deletCount的元素

var num1 = [1,2,3,4,55,3];
num1.splice(1,2,'Leo','Amy');
console.log(num1);  //[1, "Leo", "Amy", 4, 55, 3]


注:splice和slice的区别:slice会创建一个新数组,而原数组不变;splice会改变原数组

 

 var ary = [12, 23, 34, 45];
 // var num1 = ary.slice(-2);  //[34,45]
 // var num1 = ary.slice(8);  // []
 // var num1 = ary.slice(-9); //[12, 23, 34, 45];
    var num1 = ary.slice(3,2); //[]
    var num1 = ary.slice(-3,2); //[23] 
    var num1 = ary.slice(0,-3); //[12] 
    console.log(num1)

 

7.扩展

eval->JS中把字符串变为JS表达式执行的一个方法

var ary = [12, 23, 34, 45];     //需要先转化为字符串
 console.log(eval(ary.join("+")));

 关于console.dir(arr);输出的信息比console.log更多(具体结果可以自行查看)

 var a = [3,5,6,1,4,2,'xxx']; //字面量的方式,实例创建方式  new Array();
    //console.dir(a); //比console.log更详细;不过其中元素分可枚举和不可枚举的
    //length的值是数组的长度
    a.length--; //数组长度-1
    console.dir(a);

 

8.数组去重

    //->利用对象的键值对方法:    obj = {1:3,2:4};  console.log(obj[1]);
    //1)我们把数组中的每一项的值当做一个对象的属性名和属性值存储起来
    //2)但是在每一次存储之前,我们首先判断当前这一项(N)是否在对象中已经存在了->obj[N]
    // 如果值是N说明对象中已经存在这一项了,也说明了在N之前数组中已经出现过一次N了,说明当前这一项已经重复了,我们在数组中把这一项删除掉
    // 如果值是undefined,说明对象中还没有这一项,也就是当前这一项还没有在数组中出现过,我们在把当前项当做对象的属性名和属性值存储进去即可

    //   i=0 1 obj[1]->undefined {1:1}
    //   i=1 2 obj[2]->undefined {1:1,2:2}
    //   i=2 3 obj[3]->undefined {1:1,2:2,3:3}
    //   i=3 2 obj[2]->2 说明第四项2在之前出现过,我们把第四项删除掉 splice(3,1) ->原有数组改变

    var ary = [1, 2, 3, 3, 2, 3, 1, 2, 3, 4, 2, 3, 1, 2, 3, 2, 1, 2, 3];


    var obj = {};
    for (var i = 0; i < ary.length; i++) {
        var cur = ary[i];
        console.log(obj[cur]);   //前三个是undefine
        if (obj[cur] == cur) {//->说名对象中已经存在cur这一项了,也说明cur在数组中重复了,我们需要把这一项删除掉
            //ary.splice(i, 1); ->当前删除,后面每一项的索引都修改了,如果后面有一千万项,非常的耗性能
            //->我把数组末尾那一项的值拿过来替换当前项,在把数组末尾那一项的值删除掉
            ary[i] = ary[ary.length - 1];//->我把数组末尾那一项的值拿过来替换当前项
            ary.length--;//->在把数组末尾那一项的值删除掉
            i--;
            continue;
        }
        obj[cur] = cur;
        
    }
    console.log(ary);

 

转载于:https://www.cnblogs.com/grapefruitskin/p/5366975.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。
该资源内项目源码是个人的课程设计、毕业设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。 该资源内项目源码是个人的课程设计,代码都测试ok,都是运行成功后才上传资源,答辩评审平均分达到96分,放心下载使用! ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 2、本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载学习,也适合小白学习进阶,当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。 3、如果基础还行,也可在此代码基础上进行修改,以实现其他功能,也可用于毕设、课设、作业等。 下载后请首先打开README.md文件(如有),仅供学习参考, 切勿用于商业用途。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值