关于js中的数组
Posted hui-fly
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于js中的数组相关的知识,希望对你有一定的参考价值。
数组、字符串、数字是一个程序的最基本的组成部分,对于程序员来说,理解他们只是基本操作,今天说说数组
和其他强类型语言不同,数组可以容纳任何类型的值,字符串、数字、对象,也可以是其他数组(多维数组就是这样用的),并且js的数组可以像对象一样任意拓展(事实上数组就是对象)
而不像其他强类型语言一样需要预设长度。
声明数组的方式:
1、var a=[1,2,\'b\']
2、var a = new Array(3);//可以不带new,不带new会自动补上
a[0]=1
a[1]=2;
a[2]=\'b\'
3、var a = new Array(1,2,\'b\')
最常用的当然是第一种。
稀疏数组:稀疏数组就是含有空缺单元的数组,使用时要特别注意,空缺单元默认被定义为undefined,有的时候可能会出现意料不到的后果,比如不同的浏览器对空单元的处理是不一样的
另外你可以试试以下代码在不同浏览器下的结果
var a =[ ]; a.length=3; console.log(a)
var b=new Array(3); console.log(b);
var c=[undefined,undefined,undefined]; console.log(c);
总之,尽量不要用。
还有一个比较有趣的地方;数组也是对象,所以他们也可以包含键值和属性,但是要注意这些并不会被计算在length中
var a = [ ]
a[0]=0; a[\'text\']=\'Hello\';
console.log(a.length) // 1
a.text // Hello
a[\'text\'] //Hello
另外还有一点,如果键值可以被强制类型转换字符串的话,他就会被当做数字索引来处理。
这虽然有趣但是尽量不要在数组中使用这种方式,这是对象该做的事,数组是用来存放元素的。
数组方法:
(1)join()方法:接收一个参数,即用作分隔符的字符串,然后返回包含所有数组项的字符串
(2)push()方法:接收任意数量的参数,把它们逐个添加到数组末尾,并返回修改后数组的长度
(3)pop()方法:从数组末尾移除最后一项,减少数组的length值,然后返回移除的项
(4)shift()方法:移除数组中第一个项并返回改项,同时将数组长度减1
(5)unshift()方法:在数组前端添加任意个项并返回新数组的长度
(6)sort()方法:对数组中的数据进行排序
(7)concat()方法:可以基于当前数组中的所有项创建一个新数组
(8)slice()方法:基于当前数组中的一或多个项创建一个新数组
(9)indexOf()方法:从数组的开头(位置0)开始向后查找
(10)lastIndexOf():从数组的末尾开始向前查找
(11)splice()方法:恐怕要算是最强大的数组方法了,它有很多种用法,splice()的主要用途是向数组的中部插入项,但使用这种方法的方式则有如下3种:
删除:可以删除任意数量的项,只需指定2个参数(要删除的第一项的位置和要删除的项数),例如:splice(0,2)会删除数组中的前两项
插入:可以向指定位置插入任意数量的项,只需要提供3个参数(起始位置,0(要删除的项数)和要插入的项),例如:splice(2,0,"red","green")会从当前数组的位置2开始插入字符串"red"和"green"
替换:可以向指定位置插入任意数量的项,且同时删除任意数量的项,只需要提供3个参数(起始位置,要删除的项数和要插入的任意数量的项),例如:splice(2,1,"red","green")会删除当前数组位 2置 的项,然后再从位置2开始插入字符串"red"和"green";
(12)map()方法:map() 方法返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值。
(13)filter()方法:filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
具体的可以参考https://www.cnblogs.com/ToNi/p/4267463.html
类数组:
类数组也就是说不是真正的数组但是十分类似,比如DOM查询返回的节点,比如用来存放函数的参数的arguments对象(ES6废止了)
这些类数组可以通过下标的方式访问元素,但是没有诸多的数组的方法,这时可以利用数组方法进行转换
经常用的是slice(...)
function foo(){
var arr = Array.prototype.slice.call(arguments);
arr.push(\'abc\')
console.log(arr)
}
foo(\'baz\',\'bar\') //[\'baz\',\'bar\',\'abc\']
ES6的内置函数Array.from(...)也能实现同样的功能;
以上是关于关于js中的数组的主要内容,如果未能解决你的问题,请参考以下文章