美文网首页
数组操作

数组操作

作者: 张Boy | 来源:发表于2016-11-04 13:53 被阅读4次

我们在js语法基础上已经提到过数组,该篇文章把它单拿出来细细品味一番(毕竟这个大哥在以后的开发过程中是随处可见的-

  • 首先当然要先创建一个数组(废话,没有东西搞毛啊~)
//实例化数组对象来创建数组,这个好规范的说...
var _arr1 = new Array(); //这里也可以直接显示给出数组长度 new Array(3),这样数组长度是3,而不是第一个元素是3。广义来说是没办法用这个方法创建带有一个数字元素的数组的。
//另一种就比较暴力了
var _arr2 = [];
//这里直接将空数组赋值给了变量,(虽然原则上来说不叫创建,因为[]就是数组,但也算曲线救国吧);
///
//上面的两种方式都是创建的空数组,当然也可以创建非空数组
var _arr3 = new Array(1,2,3);
var _arr4 = ['1',2,true];
//数组的元素是没有类型限制的

  • 获取数组元素(这个就简单些了,毕竟没啥可说的)
var _item1 = arr3[0]; //输出1,(兄弟们都知道程序员思维的第一个数应该是0吧^-^);
//下来写一个简单的数组遍历,当然你用for-in也是一样的;
for(var i = 0;i<_arr4.length;i++){
     console.log(_arr4[i]);
}
//这里的length属性是获取数组的长度(英语的直译...);

  • 添加/移除元素,这个就比较乱了,有从数组后面追加/删除,在数组前面添加/删除,中间插入/删除,替换插入/删除
//第一种,如果你知道你的数组,比如我们前面的_arr3;
_arr3[3] = 4 //输入是[1,2,3,4];
_arr3[0] = 5 //输出是[5,2,3,4];
_arr3[5] = 6 //输出是[5,2,3,4,,6];
//当我们输出_arr3[4] 时显示undefined,但是_arr3.length是6;
///
//第二种,通用型方法pop-push,他们是在数组后面移除和添加元素的方法
_arr3.pop(); //输出[5,2,3,4,,]; 它是负责将数组最后一个元素移除。如果你用chrome调试器的话会看到[5,2,3,4]但长度是5
_arr3.push(6,7,8);//输出[5,2,3,4, ,6,7,8],它是负责在数组后面追加元素的,可以是0个或多个,如果是参数为空则不添加。
///
//第三种,通用型方法shift-unshift,他们是在数组的开头移除和添加元素的方法
_arr3.shift(); //它是没有参数的,不要视图用它一次性移除几个元素。返回结果 [2,3,4, ,6,7,8];
_arr3.unshift(0,1); //如果不传参数没有效果,返回结果[0,1,2,3,4,,6,7,8];
///
//第四种,变相添加元素——数组合并,无论你是将元素还是数组合并进去都是通用的。
_arr3.concat(9,10); //输出[0,1,2,3,4,,6,7,8,9,10];
_arr3.concat(_arr4) //输出[0,1,2,3,4,,6,7,8,9,10,'1',2,true];
///
//第五种暴力删除数组后面的元素,可一次删除多个
_arr3.length=8; //输出[0,1,2,3,4,,6,7];
_arr3.length = _arr3.length-3; //输出[0,1,2,3,4];
//这个是不是感觉相当暴力,就像本来一条绳上按次序趴着几个蚂蚱,我把绳从中间间断了,就让下面的摔死吧~
///
//第六种,我们虽然知道了如何暴力切数组,但也只能是从开头开始切,而slice就为我们提供了另一把刀,想怎么切就怎么切
_arr3.slice(1,3); //输出[1,2] ,第一个参数是开头,第二个是结尾(不包含),要注意的是它返回一个新的数组,并不会在原有的数组上做操作
_arr3.slice(-2) //输出[3,4] 如果参数是负数则从后往前算,-2就是倒数第二个,第二个参数可选,不写就是到最后
///
//最后一个方法就是splice ,这个方法可不是slice,相对来说比slice要有更多用途,我们在案例中看他的作用
_arr3.splice(2,0,5); //输出[0,1,5,2,3,4];第一个参数是要替换/删除的位置,第二个参数是要替换/删除的长度,第三个参数如果有则是将前面的几个(或0个)替换为后面的参数(可多个),如果没有则是删除前面的元素。
_arr3.splice(2,1) //输出[0,1,2,3,4];
_arr3.splice(2,2,6,7,8) //输出 [0,1,6,7,8,4];

  • 数组排序
//先说一个简单的reverse,这家伙只是简单的把数组倒置,前面的跑后面,后面的跑前面
_arr3.reverse() //[4,3,2,1,0];  //就这样,没有其他
///
///接下来才是js排序里面的大炮sort
//最简单的用法
_arr3.sort(); //[0,1,2,3,4];就是正序排列,包括字符也是升序
//如果你实际操作了,或者你有一颗探索的心你会发现一些问题,比如下面的demo
[2,13,254,19,57,31].sort() //输出[13,19,2,254,31,57];什么鸟?2比19还大?那倒不是,只是2比1大,sort只对元素的手字符进行排序,需要实现他就需要sort的大炮了
var sortAsc = function(a,b){ //升序函数
    return a-b
}
var sortDesc = function(a,b){ //降序函数
    return b-a;
}
[2,13,254,19,57,31].sort(sortAsc);   //输出 [2,13,19,31,57,254];
[2,13,254,19,57,31].sort(sortDesc); //输出 [254,57,31,19,13,2];
//就这么简单还能叫大炮?不错,sort的参数可是一个函数啊,函数有多厉害它就会有多厉害!

  • 数组格式转换
//数组作为一种数据结构,在实际应用中经常用到格式转换的问题
///
//字符串<-->数组
var _str1 = 'hello';
var _arr1 = str1.split(''); //输出['h','e','l','l','o'];split方法是正则表达中的一个,在进阶篇正则表达式中还会详述。
//
var _str2 = arr1.join('');//输出'hello'; 
//这俩方法可以说是冤家,join负责粘连,split负责切;下面看一下join连接
var _str3 = arr1.join('$'); //输出['h$e$l$l$o'];
var _arr2 = str3.split('$');//输出['h','e','l','l','o'];

基本开发中常用到都在这了,如果您有更好的,请留言~

相关文章

  • 数组

    数组定义: 元素类型 数组操作 Range 数组的批量操作 遍历

  • 迟到的Swift入门 - 数组操作

    Swift数组操作 1. 数组的日常操作 1.0 声明数组 初始化空数组 初始化默认值的数组 2. 数组基本操作 ...

  • 2. Numpy使用

    numpy的基本操作 生成数组 数组的基本操作 数组的运算 数组间的运算

  • 数组和对象的操作

    数组操作方法 数组中splice的操作(改变的是原数组,返回结果是分割的数组) 数组中slice的操作(不改变原数...

  • Matrix01-03:ndarray数组的操作

    ndarray数组的操作 数组数据转换数组形状变换数组数据选择与操作数组计算处理数组算术运算 一、数组数据转换 注...

  • js基础之数组方法

    数组简单操作 数组合并 数组排序

  • 基本dom操作,数组操作

    dom操作 数组操作

  • java笔记5

    数组的定义 数组的内存分配及特点 数组操作常见问题 数据常见操作 数组中的数组 @Test public void...

  • 数组类常用操作方法

    一、数组 二、不可变数组(NSArray) 三、不可变数组的操作 四、可变数组(NSMutableArray)的操作

  • JavaScript 数组方法整理大全

    一、常用的数组方法★ 直接操作影响原数组的方法: ★ 直接操作不影响原数组的方法: ★ 直接操作有可能影响到原数组...

网友评论

      本文标题:数组操作

      本文链接:https://www.haomeiwen.com/subject/xzumuttx.html