@JRuiCoder
2016-04-19T10:18:00.000000Z
字数 2116
阅读 1190
JavaScript数据结构
两种方式声明
1. var num=[];
2. 构造函数:
var num=new Array();
推荐使用[]操作符,效率更高。
可以使用Array.isArray(),判断一个对象是否是数组。
使用[]操作符读取数组中的元素
var stringWord="hello hell hel he h";stringWord.split("");
浅复制,只是为被赋值的数组增加了一个新的引用,通过原引用修改了数组的值,另一个引用也会发生相应的变化。
var num=[1,2,3,4,5,6,7];var samenum=num;num[0]=20;samenum[0]; //20
深复制:将原数组中的每一个元素都复制一份到新数组里面;
function deepCope(num,samenum){for(vari=0;i<num.length;i++){num[i]=samenum[i];}}var num=[1,2,3,4,5,6,7];var samenum=[];deepCopy(num,samenum);num[0]=20;samenum[0]; //1
提供一组用来访问数组元素的函数
indexOf(),如果存在放回该元素在数组中的索引,如果不包含,返回-1
lastIndexOf() 函数返回相同元素中最后一个元素的索引,没有找到,返回-1
join()和toString()
num.join()
toString()使用方法类似
区别
toString()强制变换为字符串,但是不能加入参数,join可以传入一些参数作为分隔。
concat()和splice()允许通过已有数组创建新数组。
concat()合并数组,作为参数的数组放在调用函数的数组后面
splice()
删除——只需要指定两个参数。从现有数组里截取一个新数组。第一个参数是截取的起始索引,第二个参数是截取的长度
插入——可以向指定位置插入任意数量的项,需要提供三个参数:起始位置,0,要插入的项
例如
num.splice(2,0,"hello");
替换——指定三个参数:起始位置、要删除的项数、要插入的任意数量的项
num.splice(2,1,"hello","world")
改变数组的内容
有两个方法,push()和unshift();
push()会将一个元素添加到数组末尾
使用这个方法push一个数组,只是把整个数组当做添加数组中的一个子元素。
也可以使用
num[num.length]="hello";
unshift()可以将元素添加在数组的开头
pop()可以删除数组末尾的元素
shift()可以删除数组中的第一个元素
被删掉的元素作为方法返回,可以使用一个变量来保存删除的元素。
从中间添加和删除一个元素:splice()
reverse(),将数组中元素的顺序进行翻转
sort(),按照字典进行排序,从小到大排序,可以传入一个大小比较函数
function compare(a,b){return a-b;}num.sort(compare);
对数组中的每个元素应用一个函数,可以返回一个值,或一个新数组。
forEach(),该方法接受一个函数作为参数,例如
function add(a){console.log(a+2);}var num=[1,2,3,4,5,6];num.forEach(add);
every(),接受一个返回值为布尔类型的函数, 对于所有的元素,该函数返回true,则该方法返回true。
function more(a){return num>3;}var num=[1,2,3,4,5,6];var ok=num.every(more)console.log(ok);
some()方法接受一个返回值为布尔类型的函数,只要有一个元素使得该函数返回true,该方法就返回true。用法与every()类似。
reduce()
用来将数组中的元素连接成一个长的字符串
function concatNum(a,b){return a+b;}var words=["the","weather","is","good"];console.log(words.reduce(concatNum));
reduceRight(),从右到左执行
map(),对数组中的每个元素使用某个函数,返回一个新的数组,该数组的元素是对原有元素应用某个函数得到的结果。
function add(a){return a+5;}var num=[1,2,3,4,5,6];console.log(num.map(add))
filter(),传入一个返回值为布尔类型的函数,结果均为true,该方法并不返回true,而是返回一个新数组,该数组包含结果为true的元素。
var grades = [[89, 77, 78],[76, 82, 81],[91, 94, 89]];