本文主要介绍JS对数组(列表)的基本操作。习惯了用数据库的操作顺序来说明:增、删、改、查;合并,裁剪,排序,格式化。
一.数组元素的添加(增加)
增加数组元素有三种方法:unshift() push() splice()
1、arrayObj.
unshift
([item1 [item2 [. . . [itemN ]]]]);
//
将一个或多个新元素添加到数组开始位置(即头部),数组中的原元素自动后移;并返回数组新长度。
2、arrayObj.
push
([item1 [item2 [. . . [itemN ]]]]);
//
将一个或多个新元素添加到数组结尾;并返回数组新长度。
3
、
arrayObj.
splice
(insertPos,[item1[,item2[,. . . [,itemN]]]]);
//
将一个或多个新元素插入到数组的
指定位置
,插入位置的元素自动后移,返回""。
举例说明:
unshift() var a = [1,2.5,"a","yes"]; var temp = a.unshift(-1,-2.2); console.log(a); //[-1,-2.2,1,"yes"] console.log(temp); //6 数组的长度 push() var a = [1,"yes"]; var temp = a.push(-1,1)">//[1,"yes",-1,-2.2] console.log(temp); //6 数组的长度 splice() 将数据添加到原数组结尾 var a = [1,"yes"]; var temp = a.splice(a.length,-2.2); //此将数据添加到原数组结尾,同push() console.log(a); //a: [1,1)">//[] 空数组 splice() 将数据添加到原数组开头 var a = [1,"yes"]; var temp = a.splice(0,-2.2); //此将数据添加到原数组开头,同unshift() console.log(a); //a: [-1,"yes"] console.log(temp); //[] 空数组 splice() 将数据添加到具体位置 var a = [1,"yes"]; var temp = a.splice(2,-2.2); //此将数据添加到第三个位置 console.log(a); //a: [1,1)">//[] 空数组
二.数组元素的删除
删除数组元素有三种方法:shift() pop() splice()
1、
arayObj.shift();//
删除原数组第一项,并返回删除元素的值;如果数组为空则返回undefined
2、
arrayObj.pop();//
删除原数组最后一项,并返回删除元素的值;如果数组为空则返回undefined
3
、 arrayObj.splice(deletePos,deleteCount);
//
删除从指定位置deletePos开始的指定数量deleteCount的元素,以
数组形式
返回所移除的元素
举例说明:
shift()
var a = [1,"yes"];
var temp = a.shift();
console.log(a); //[2.5,1)">// 1 原数组第一项
pop()
var a = [1,"yes"];
var temp = a.pop();
console.log(a); // [1,"a"]
console.log(temp); // yes 原数组最后一项
splice() 删除指定位置开始的数据。第一个参数是指定位置,第二个参数是删除从指定位置开始的数据个数
var a = [1,"yes"];
var temp = a.splice(1,1); //删除第2个位置开始的1个数据,
console.log(a); // [2.5] 以数组形式返回移除的元素
var temp = a.splice(1,2); //删除第2个位置开始的2个数据,
console.log(a); // [2.5,"a"] 以数组形式返回移除的元素
三.数组元素的修改
数组元素值的修改:先按元素的索引查找到需要修改的元素;
然后进行元素值的修改。
举例说明:
var a = [1,"yes"];
a[2] = "IT";
console.log(a);
还可以通过
splice()函数进行修改。splice(start,delCount,val1,val2,...):从start位置开始删除delCount项后,并从该开始位置起插入val1,... 当然删除的元素个数和添加的元素个数必须相等。
// [10,"No"] 其实就是删除项,用数组形式返回
四.数组元素的查询(访问)
获取数组元素值通用的一个方法:按元素的索引获取元素值;
返回改索引下的元素值
注:一次只能返回一个元素值,不能切片分块返回,也不能从数组末尾以负数形式返回
举例说明:
// 2.5 返回数组索引为1的元素值 var temp = a[1,2]; var temp = a[-1]; //这两种都是错误的,无法获取想要的数据
五.数组元素的合并
将两个以上数组合并为一个数组,常用的方法是
concat(),此方法
返回一个新的数组
,而参与合并的
原数组不变
。
举例说明:
//将b合并到a后面 var tempdata = b.concat(a); //将a合并到b后面 console.log(temp); console.log(tempdata); //["You",6]
通过concat()函数实现两个以上数组的合并,其实通过
循环使用unshift()和push()
也可以做到。
比如将b加在a后面/前面,可以循环使用push()/unshift()函数。
.length; i++){
a.push(b[i]) //将b加在a后面;如果希望将b加在a前面,则改用unshift()
}
console.log(a); console.log(b); // ["You","yes"]
这样做将会改变宿主数组,如果不希望改变原数组的话,则新建一个新的空数组,将宿主数组(载体数组)
拷贝
给新数组,这样原数组就可以不改变。
注:这里的拷贝是深拷贝,而不是直接将a赋值给新数组,那样的话新数组其实只是保存了原数组的一个地址,新数组被修改,则原数组一样会被修改。
六.数组元素裁剪
数组的裁剪:是在原数组基础上截取出一个小的数组,以便于使用和存放。截取的元素组成一个新的数组副本,而原数组不发生改变。
数组的裁剪一般使用
slice()函数,slice(start,end):返回从原数组中指定开始下标到结束下标之间的元素组成新的数组 ,若结束下标超出原数组总长,则以原数组结尾处下标为结束下标。
举例说明:
// ["a",12] console.log(a); console.log(a); // [1,23]
七.数组元素排序
数组的排序:是在
原数组的基础上
对数组元素进行整理,使得元素按照一定顺序排列,
不会生成副本
。
数组排序一般使用数组对象内置方法
sort()。sort()方法用于对数组的元素进行排序。
如果调用该方法时没有传入参数,将按字母顺序对数组中的元素进行默认排序,是按照字符编码的顺序进行排序。如果想按其他标准进行排序,则需要提供比较函数,该函数比较两个值,然后返回一个数字来说明这两个值的大小。比较函数具有两个参数 a 和 b,其返回值如下:
若 a 小于 b,在排序后的数组中 a 应该出现在 b 之前,则返回一个小于 0 的值(-1)。
若 a 等于 b,则返回 0。
若 a 大于 b,则返回一个大于 0 的值。
举例说明:
1、纯字符串排序
var a = ["zhao","qian","sun","li","zhou","wu","zheng"];
var temp = a.sort();
console.log(a); // ["li","zhao","zheng","zhou"]
console.log(temp); // ["li","zhou"] 返回排好序的原数组 先按第一个字母排序,第一个相同则按第二个排序,以此类推。
2、字符串和数字混杂
var a = ["zhao",2];
var temp = a.sort();
console.log(a); 先排数字,后排字符串,其实这的1,2排序看似正确,其实不是按照他们的大小排的,而是按照1和2的编码顺序排的。从下面这个例子可以看出。
3、 纯数字排序(但不提供比较函数)
var a = [11,13,20,2];
var temp = a.sort();
console.log(a); // [-1,11,5]
从这就可以看出默认排序是按照字符编码顺序排的,而不是大小
4、 纯数字正确排序(需要提供排序函数)
var a = [11,2];
var temp = a.sort(sortNumber);
console.log(a); // [-1,20] 这才是正确的从小到大排序
function sortNumber(a,b) 这是从小到大排序
{
return a - b
}
function // [20,-1] 这是从大到小排序结果
八.数组的格式化
数组也有尴尬的时候,有时候我们需要将数组转化为字符串进行传参,或者进行数据存储等,那么这时候就需要将数组转化成字符串。
join() 方法用于把数组中的所有元素放入一个字符串,元素通过指定的分隔符进行分隔。Join方法返回一个新的字符串副本,不会对原数组进行修改。
语法格式:arrayObject.join(separator) 返回一个字符串,该字符串是通过把 arrayObject 的每个元素转换为字符串,然后将这些字符串连接起来,在两个元素之间插入separator 字符而生成。
举例说明:
//1,a,yes,23 console.log(a); //提供连接字符,但连接字符必须是字符(“x”)形式 console.log(temp); // 1|2.5|a|yes|12|23 console.log(a);var
arrayObj = new
Array();
//创建一个数组
通过内置对象Array()进行创建
var
arrayObj = new
Array([size]);
//创建一个数组并指定长度,注意不是上限,是长度
var
arrayObj = new
Array([element0[,element1[,...[,elementN]]]]);
//创建一个数组并初始化赋值
var
arrayObj = []; //
也可以创建一个数组,并已完成初始化,只不过是个空的,没有实际元素
注:需要说明的是,虽然第二种方法创建数组指定了长度,但实际上所有情况下数组都是变长的,也就是说即使指定了长度为5,仍然可以将元素存储在规定长度以外的,注意:这时长度会随之改变。
数组是JavaScript提供的一个内部对象,它是一个标准的集合,我们可以添加(push)、删除(shift)里面元素,还可以通过for循环遍历里面的元素。
附件:数组对象内置操作方法
Array 对象方法
方法
描述
连接两个或更多的数组,并返回结果。
把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。
删除并返回数组的最后一个元素
向数组的末尾添加一个或更多元素,并返回新的长度。
颠倒数组中元素的顺序。
删除并返回数组的第一个元素
从某个已有的数组返回选定的元素
对数组的元素进行排序
删除元素,并向数组添加新元素。
返回该对象的源代码。
把数组转换为字符串,并返回结果。
把数组转换为本地数组,并返回结果。
向数组的开头添加一个或更多元素,并返回新的长度。
返回数组对象的原始值
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。