JavaScript中的数组

JavaScript中的数组

数组这个概念没什么难懂的,一组数据的组成的一个集合,只不过这个集合是有序的,我们只需要按照序号存取数组就可以了,主要还是了解一下数组的各种用法。下面的内容其实就是《JavaScript权威指南》中数组一章的精简版,本文借此将数组的知识过了一遍,对数组有一个整体的掌握,又可以日后当作工具查阅。

1.数组基础

创建数组

以下为数组创建的各种情况,这种偏实用性的知识还是自己敲一遍,敲一遍熟悉了。

var a = [1,2,3];//common array
var b = [];//empty array
var c = [1,true,'a'];//array with diffrent type data;

var d = 11;
var c = [d,d+1,d+3];

var e = [[1,{x:1,y:2}],[2,{x:2}]];
var f = [1,,3];//one of three elements is undefined
var a = new Array();
var b = new Array(10);//10 is length of array
var c = new Array(1,2,3,4,"dafd");

数组元素读写

var a = ["world"];//first element a[0]="world"
var value = a[0];//read first element
a[1] = 3.14;

i=2;
a[i]=3;//a[2]==3(thirst element)
a[i+1]=4;

稀疏数组

稀疏数组就是包含从0开始的不连续索引的数组。

a = new Array(5);
a = [];
a[1000] = 0;

数组的length属性值代表了数组中元素的个数,要是length大于数组中元素的个数,那么这个数组就是稀疏的。用稀疏数组还不如直接用对象,我觉得这个在真正编码过程中会很少用到吧。

数组长度

length是数组的属性,代表了数组中元素的个数。

a = [1,2,3,4];
a.length = 4;

[1,2,4].length = 3;

数组中元素的添加和删除

最简单的添加方法

a = [];
a[0] = 'a';
a[1] = 'b';

push()添加
在数组尾部添加元素

a = [];
a.push('a');//a = ['a'];
a.push('b','c');//a = ['a','b','c'];

delete删除元素
delete不会改变数组的长度

var a = [1,2,3];
delete a[1];//a = [1,undefined,3]

pop()和shift()删除元素
pop()函数可以删除数组尾部元素并返回值;
shift()函数可以删除数组头部元素并返回值;

a = [];
a.push('a');//a = ['a'];
a.push('b','c');//a = ['a','b','c'];

数组遍历

数组遍历其实还是结合之前写的JavaScript中的语句中的循环语句比较清楚。

var a = [1,2,4,5];
var b = [];
var c;
for (var i = 0;i < a.length;i++){
    b[i] = a [i];
}

for item in a{
    var value = a[item];
}

a.forEach(function(x){
    c +=x;
})
console.log(c);//=>12

多维数组

先简单的理解二维数组,其实就是普通数组的每一个元素也是个数组,那么三维数组就是数组的元素是数组,子数组的元素还是数组。

var a = new Array(10);
for (var i = 0;i < a.length;i++){
    a[i] = new Array(10);
}
for (var row = 0;row < a.length;row++){
    for (var col = 0;col < a[row].length;col++){
        a[row][col] = row*col;
    }
}

2.数组方法

ES3中的数组方法

join()

将数组中的所有元素转化成字符串拼接在一起

var a = [1,2,3];
a.join();//=>'1,2,3'
a.join(" ");//=>'1 2 3'
a.join("");//=>'123'

var b = new Array(10);//empty
b.join('-');//=>'---------'
reverse()

返回倒序的数组

var a = [1,2,3];
a.reserve();//=>[3,2,1]
sort()

为数组排序,元素为字母就按字母表顺序,undefined元素会排到最后,想要按其他顺序排序,可以在sort的参数里设置排序条件

var a = ['banana','apple','cherry'];
a.sort();//=>['apple','banana','cherry']

var a = [33,4,1111,222]
a.sort();//=>[1111,222,33,4]
a.sort(function(a,b){
    return a-b; //=>[4,33,222,1111]
})
concat()

拼接数组

var a = [1,2,3];
a.concat(4,5);//=>[1,2,3,4,5]
a.concat([4,5]);//=>[1,2,3,4,5]
a.concat([4,5],[6,7]);//=>[1,2,3,4,5,6,7]
a.concat([4,[5,[6,7]);//=>[1,2,3,4,5,[6,7]]
slice()

返回指定数组的一个片段或者子数组

var a = [1,2,3,4,5];
a.slice(0,3);//=>[1,2,3] 包含参数1但不包含参数2
a.slice(3);//=>[4,5]
a.slice(1,-1);//=>[2,3,4] -1表示倒数第1个
a.slice(-3,-2);//=>[3]
splice()

插入或删除数组元素的通用方法:第一个参数指定起始位置,第二个参数个数,不写默认到尾部。

//删除
var a = [1,2,3,4,5,6,7,8];
a.splice(4);//=>返回[1,2,3,4] a=[5,6,7,8]
a.splice(1,2);//=>返回[2,3] a=[1,4]
a.splice(1,1);//=>返回[4] a=[1]

//增加
var a = [1,2,3,4,5];
a.splice(2,0,'a','b');// 删除0个,插入2个 =>返回[] a=[1,2,'a','b',4,5]
a.splice(2,2,[1,2],3);//=>返回['a','b'] a=[1,2,[1,2],3,3,4,5]
push() 和 pop()

在数组尾部操作

var stack = [];
stack.push(1,2);//stack = [1,2] return 2(数组长度)
stack.pop();//stack = [1] return 2
stack.push(3);//stack = [1,3] return 2
stack.pop();//stack = [1] return 3
unshift() 和 shift()

在数组头部操作

var a = [];
a.unshift(1);//a = [1] return 1
a.unshift(22);//a = [22,1] return 2
a.shift();//a = [1] return 22
toString() 和 toLocalString()

toLocalString()是toString()的本地化版本?

[1,2,4].toString()//=>'1,2,4'
['a','b','c'].toString()//=>'a,b,c'
[1,[2,'c']].toString()//=>'1,2,c'

ES5中的数组方法

forEach()

forEach()接受一个函数作为参数,该函数接受3个参数:数组元素,元素索引和数组本身。

var a = [1,2,3,4,5];
var sum = 0;
a.forEach(function(value){
    sum += value;//=>sum == 15;
})
a.forEach(function(v,i,b){
    b[i] = v+1;//=>[2,3,4,5,6]
})
map()

map()将调用的数组的每个元素传递给指定的函数并返回一个数组,它包含数组的返回值。

var a = [1,2,3];
a.map(function(x){
    return x*x;//=>[1,4,9] 不修改原数组
})
filter()

filter()接受一个函数参数,返回的是函数参数所规定的返回的调用数组的子集。

var a = [1,2,3];
a.filter(function(x){
    return x<2;//=>[1] 不修改原数组
})
every() 和 some()

every()表示对于任意元素的逻辑判定;
some()表示对于存在元素的逻辑判定。

var a = [1,2,3,4,5];
a.every(function(x){
    return x<10;//=>true
})
a.every(function(x){
    return {x % 2 === 0};//=>false
})
a.some(function(x){
    return {x % 2 === 0};//=>true
})
reduce() 和 reduceRight()

使用指定的函数将数组元素进行组合生成单个值,接受两个参数,参数一为执行化简操作的函数,参数二(可选)传递给函数的初始值。
reduceRight()将索引变为从高到低,功能是一样的。

var a = [1,2,3,4,5];
var sum = a.reduce(function(x,y){
    return x+y;//数组求和
},0)
indexOf() 和 lastIndexOf()

接受一个参数,找到数组中和参数一样的元素的索引,indexOf()返回第一个,lastIndexOf()返回第二个。

var a = [0,1,2,1,0];
a.indexOf(1);//=>1
a.lastIndexOf(1);//=>3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值