注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

淡淡De影痕的博客

将来的你一定会感激现在拼命的自己。

 
 
 

日志

 
 
 
 

数组小结  

2014-10-10 23:41:23|  分类: JS初心向小结 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
今天总结一下数组中的相关知识点。
一.数组的创建

// 创建空数组
var arr1 = new Array();

// 数组的长度为5
var arr2 = new Array(5);

var arr3 = new Array(1,2,3,"qweq");

var arr4 = [1,2,3,4,5];


二.数组的取值与赋值

var width = [100,200,300];
alert(width[0]); //数组取值

width[1] = 500; //数组赋值
alert(width[1])


三.数组的长度

//length为数组的长度

//咱们可以利用length值对数组的末尾进行添加或删除等操作

var width = [100,200,300];

width.length = 2;

alert(width[2])//undefined
	width[20] = 1000;
alert(width.length)//21

四.数组的转换(将数组转换成字符串

var names = ["wu","wu1","wu2"];
alert(names.valueOf())
alert(names.toLocaleString())
alert(names.toString())
alert(names)// 隐式调用toString()方法

var people1 = {
toLocaleString:function (){
return "wu1";
},
toString:function(){
return "wu2";
}
}

var people2 = {
toLocaleString:function (){
return "wu3";
},
toString:function (){
return "wu4";
}
}

var people = [people1,people2];
alert(people.toString());//wu2,wu4
alert(people);//wu2,wu4
alert(people.toLocaleString());//wu1,wu3

在数组转换成字符串的过程中每一个数组中的项都会以作为默认间隔符。join()方法可对其进行修改。

var names = ["wu","wu1","wu2"];

// join()方法替换分隔符
alert(names.join("|"))


五.数组的一些方法
1.push()向数组的末尾添加元素。

var a = [1,2,3];
a.push(4,5);
alert(a);//1,2,3,4,5


2.pop()移除数组最后一项并返回该元素。

var a = [1,2,3,4];
a.pop();
alert(a)//1,2,3


3.shift()移除数组最前一个元素并返回该元素值,数组中元素自动前移。

var a = [1,2,3,4];
a.shift();
alert(a)//2,3,4


4.unshift()向数组前端添加任意个项,数组中元素自动后移。

var a = [1,2,3,4];
a.unshift(7,8,9);
alert(a)//7,8,9,1,2,3,4


5.reverse()反转数组元素。

var a = [1,6,3,4,5];
a.reverse();
alert(a)//5,4,3,6,1


6.sort()从小到大排序

var a = [1,8,4,5,7];
a.sort();
alert(a);//1,4,5,7,8

直接用sort()会遇到问题,sort()是先将数组中的每一项转换成字符串再进行比较。所以可能会这样~

var a = [1,11,111,2,3];
a.sort();
alert(a)//1,11,111,2,3

所以sort()通常需要利用比较函数。咱们先来看看第一种比较函数写法

function compare(value1,value2){
if(value1<value2){
return -1;
}else if(value1>value2){
return 1;
}else{
return 0;
}
}
var a = [3,13,6,1,8,4];
a.sort(compare);
alert(a)//1,3,4,6,8,13

这是第二种写法

function compare(value1,value2){
return value1 - value2;
}
var a = [3,14,4,6,1]
a.sort(compare);
alert(a)//1,3,4,6,14


7.concat()可将数组,字符串,数字连接在一起创建新数组。

var a = [1,2,3,4]
var c = ["a","b","c"]
var b = a.concat("wu",c,7,8)
alert(b)//1,2,3,4,wu,a,b,c,7,8


8.slice()可基于当前数组,截取指定位置创建新数组。
slice()可接受1到2个参数,即返回项的起始和结束位置。
1个参数:slice()方法返回从指定位置开始到数组末尾的所有项。

var a = [1,2,3,4,5,6,7,8];
var b = a.slice(1);
alert(b)//2,3,4,5,6,7,8

2个参数:slice()方法返回起始位置结束位置之间的项,不包括结束位置的项

var a = [1,2,3,4,5,6,7,8];
var c = a.slice(1,7)
alert(c)//2,3,4,5,6,7

若传入的参数为负值,slice()方法会用数组长度加上该数字确定截取位置。

var a = [1,2,3,4,5,6,7];
var b = a.slice(-2,-1)//等同于a.slice(5,6)
alert(b)//6


若结束位置参数小于起始位置则返回空数组。

var a = [1,2,3,4,5,6];
var b = a.slice(4,3);
alert(b)//返回空数组


9.splice()可对数组中的项进行删除,添加,替换等操作。
 删除 (需传2个参数)
  第一个参数为:要删除的第一项的位置。 
第二个参数为:删除的项数。

var a = [1,2,3,4,5,6,7];
a.splice(0,3);
alert(a);//4,5,6,7


 插入(最少传3个参数)
第一个参数为:要删除的第一项的位置。
第二个参数为:删除的项数。(将其设置为0)
第三个参数为:要插入的项。(可插入多项)

var a = [1,2,3,4,5];
a.splice(0,0,8,9);
alert(a)//8,9,1,2,3,4,5


 替换(最少传3个参数)
第一个参数为:要删除的第一项的位置。
第二个参数为:删除的项数。
第三个参数为:要插入的项。(可插入多项)

var a = [1,2,3,4,5];
a.splice(1,2,8,9);
alert(a)//1,8,9,4,5


10.indexOf()从数组的开头查找指定项,并返回其位置。
参数1:想要查找的项;
参数2:查找起点的位置索引(可选)

var a = [1,2,3,4,5,6]
alert(a.indexOf(4))//3

只要发现完全匹配的值后就会中断跳出并返回其位置。

var a = [1,2,3,4,5,4]
alert(a.indexOf(4))//3


11.lastIndexOf()从数组结尾开始查找指定项,并返回其指定位置。
用法和indexOf()类似这里不过多赘述了。

12.filter() 对数组中的每一项运行给定函数,并返回该函数中判定为true的项组成的新数组。
此方法会传给函数3个参数
参数1:数组项的值。
参数2:该项在数组中的位置。
参数3:数组本身。

var a = [1,2,3,4,5,4,3,2,1];
var b = a.filter(function(item,index,array){
return (item>3);//返回数组中大于3的项
})
alert(b)//4,5,4


13.map() 对数组中的每一项运行给定函数,返回每次函数调用的结果组成的数组。
此方法同样会传给函数3个参数
参数1:数组项的值。
参数2:该项在数组中的位置。
参数3:数组本身。
map()方法返回的数组,其每一项都是在原始数组中的对应项上运行你指定函数的结果。

var a = [1,2,3,4,5,6,3,2,1];
var b = a.map(function(item,index,array){
return item + 2;//在原数组的基础上,为每一项加2并返回新数组。
})
alert(b)//3,4,5,6,7,8,5,4,3


14.reduce() 从数组的第一项开始,逐个遍历到最后。迭代数组中的所有项。
此方法会传给函数4个参数
参数1:前一个值。
参数2:当前值。
参数3:项的索引。
参数4:数组对象。

//可利用此方法对数组所有项求和

var a = [1,2,3,4,5];
var sum = a.reduce(function(prev,cur,index,array){
return prev + cur;
})
alert(sum)//15

运行过程如下:
第一次迭代:prev:1;cur:2; sum:3;
第二次迭代prev:3;cur:3; sum:6;
第三次迭代prev:6;cur:4; sum:10;
第四次迭代prev:10;cur:5; sum:15;

15.reduceRight() 从数组的最后一项开始,逐个遍历到第一项。迭代数组中的所有项。
用法与reduce() 类似。

欢迎大家交流指正~淡淡De影痕
  评论这张
 
阅读(339)| 评论(4)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018