JavaScript 数组

数组是由对象发展而来,对象包含数组;

数组是一种有序的数据集合,数组中各个成员之间使用逗号进行分隔,它们被称为数组元素。

['数组元素1','数组元素2','数组元素3','数组元素4']

1、创建数组

(1)构造函数创建数组

语法格式:var 变量名 = new Array(元素 0,元素 1,...,元素 n);

var array = new Array(1,2,3,4);

(2)数组直接量创建数组

语法格式:var 变量名 = [元素 0,元素 1,...,元素 n];

var array = [1,2,3,4]

2、数组元素

(1)元素的获取

语法格式:数组[索引];(数组的索引是从零开始的,直到数组的长度减一结束)。

var array = [1,2,3,4];
console.log(array[0]);//打印结果:1

(2)元素的添加、修改和删除

使用索引进行简单的添加和修改。

var array = [];
array[0] = "添加元素";
console.log(array[0]);//打印结果:添加元素
array[0] = "修改元素";
console.log(array[0]);//打印结果:修改元素

push() 和 unshift() 方法。push() 方法是向数组的末尾追加一个或多个元素;unshift() 方法是在数组头部插入一个或者多个元素。

var array = [2];
array.push(3);
console.log(array.toString());//打印结果:2,3
array.unshift(1);
console.log(array.toString());//打印结果:1,2,3

与 push() 和 unshift() 方法对应的还有 pop() 和 shift() 方法,pop() 方法用于删除数组中的最后一个元素,shift() 方法用于删除数组中的第一个元素。

var array = [1,2,3];
array.pop();
console.log(array.toString());//打印结果:1,2
array.shift();
console.log(array.toString());//打印结果:2

(3)元素的查询 

indexOf() 和 lastIndexOf() 方法,indexOf() 方法用来搜索指定的元素,返回第一个元素的索引,若未搜索到则返回 -1。indexOf() 方法是从头到尾进行搜索,而lastIndexOf() 方法与其唯一的区别就是从尾到头进行搜索。

(4)元素的遍历

for...in 循环遍历。

var array = [1,2,3,4];
for(var item in array){
    console.log(array[item]);
}
/*逐条打印结果:
    1
    2
    3
    4
*/

for 循环遍历,需要用到数组的 length 属性作为判断。

var array = [1,2,3,4];
for(var i=0;i<array.length;i++){
    console.log(array[i]);
}
/*逐条打印结果:
    1
    2
    3
    4
*/

 3、特殊的数组形式

(1)稀疏数组

稀疏数组的索引会有断层,稀疏数组的特点就是它的 length 属性不能代表有效元素的个数。

(2)多维数组

多维数组就是数组的元素还可以是数组。

var array = [1,[2,3],4];
//获取多维数组的元素
console.log(array[1][0]);//打印结果:2

(3)类数组对象

类数组对象相当于对象使用数组的方式来存储数据。

var obj = { '0': 'a','1': 'b','2': 'c' };
console.log(obj[0]);//打印结果:a

ps:字符串以一种只读的类数组的形式存在,但其并不是真正的数组类型。这一机制也让它有了数组的一些特征。

var str = '好好学习';
console.log(str[0]);//打印结果:好
//charAt() 方法
console.log(str.charAt(2);//打印结果:学

4、数组方法 

(1)join() 方法

join() 方法(不改变原数组)的作用是将数组的所有元素转换为字符串,并将每个数组元素进行连接,返回最终生成的字符串。

语法格式:array.join(分隔符);分隔符省略则默认使用逗号。

var array = [1,2,3,4];
console.log(array.join());//打印结果:1,2,3,4
console.log(array.join(#));//打印结果:1#2#3#4

(2)concat() 方法

concat() 方法的作用是连接两个或多个数组,该方法不会修改原数组,而是返回一个新数组。

语法格式:array.concat(arrayX,arrayX,...,arrayX);

参数说明:array 要操作的数组,arrayX 必需,可以为任意多个,可以是数组,也可以是具体的值。

var array = [1,2,3];
var array1 = array.concat(4,[5,[6]]);
console.log(array1.length);//打印结果:6
console.log(array1);//打印结果:[1,2,3,4,5,[6]]

(3)splice() 方法

splice() 方法用于插入、删除或替换数组的元素,然后返回被操作的元素。需要注意的是,该方法是对于调用数组的操作,而不是返回一个新数组。

语法格式:array.splice(index,count,elementX,...);

参数说明:index 必需,整数,规定要操作数组的索引位置,使用负数则会从数组的结尾处规定位置,-1 为倒数第一个元素。count 必需,整数,规定要删除的元素个数。elementX 可选,要插入的新元素,可以有若干个。

var array = [1,2,3,4,5];
var array1 = array.splice(0,2,"新元素");
console.log(array1);//打印结果:[1,2]
console.log(array);//打印结果:['新元素', 3, 4, 5]

(4)slice() 方法

slice() 方法用于对数组的元素截取片段,然后放回被操作的元素。需要注意的是,该方法不会对调用数组进行修改

语法格式:array.slice(start,end);

参数说明:start 必需,整数,规定要操作数组的索引位置,使用负数会从数组结尾处规定位置,-1 表示倒数第一个元素;end 可选,选取元素的结束位置。省略该参数则默认为数组末尾。使用负数则会从数组结尾处规定位置。

var array = [1,2,3,4,5];
console.log(array.slice(2));//打印结果:[3,4,5]
console.log(array.slice(1,-1));//打印结果:[2,3,4]

(5)forEach() 方法

forEach() 方法(不改变原数组)从头到尾遍历数组,每个元素都会调用指定的回调函数。

语法格式:array.forEach(function(element,index,arrayOne){ ... });

参数说明:function 必需,作为参数的回调函数;element 必需,作为传入实参的数组元素;index 可选,作为传入实参的元素索引;arrayOne 作为传入实参的数组本身。

var array = [1,2,3,4,5];
var sum = new String();
array.forEach(function(element){
    sum += element;
});
console.log(sum);//打印结果:12345 如果sum = new Number(); 打印结果为15

array.forEach(function(e,i,a){
    a[i] = e + '#';
});
console.log(array);//打印结果:['1#', '2#', '3#', '4#', '5#']

(6)map() 方法

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

语法格式:array.map(function(element){ return value });

参数说明:function 必需,作为参数的回调函数;element 必需,作为传入实参的数组元素。

var array = [1,2,3,4,5];
var arrayOne = array.map(function(e){
    return e * e;
});
console.log(arrayOne);//打印结果:[1, 4, 9, 16, 25]

(7)filter() 方法(不改变原数组

filter 的英文释义为过滤,该方法用于进行逻辑判断,过滤掉不符合条件的数组元素,返回一个新数组,新数组中包含符合条件的数组元素。

语法格式:array.filter(function(element,index){  });

参数说明:function 必需,作为参数的回调函数;element 必需,作为传入实参的数组元素。index 可选。作为传入实参的元素索引。

var array = [1,2,3,4,5];
var array1 = array.filter(function(e){
    return e < 3;
});
console.log(array1);//打印结果:[1, 2]

(8)是否都符合 every() 和 是否都不符合 some() 方法(不改变原数组

every() 和 some() 方法具有类似效果,用于对调用数组的每个元素进行逻辑判断,返回值是 true 或 false。其中,every() 方法是对每个数组元素进行判断,当每个数组元素都符合逻辑判断时则返回 true,否则返回 false。some() 方法是对每个数组元素进行判断,当所有数组元素都不符合逻辑判断时则返回 false,否则返回 true。

语法格式:array.every(function(element){ ... }); array.some(function(element){ ... });

参数说明:array 要操作的数组;function 必需,作为参数的回调函数;element 必需,作为传入实参的数组元素。

var array = [1,2,3,4,5];
var bool1 = array.every(function(element){
    return element > 3;
});
var bool2 = array.some(function(element){
    return element > 3;
});
console.log(bool1);//打印结果:false
console.log(bool2);//打印结果:true

(9)sort() 数组排序改变原数组

(10)reverse() 反转数组(改变原数组

(11) indexOf() & lastIndexOf() 索引方法(改变原数组

都是返回要查找的项在数组中首次出现的位置,没有返回 -1,indexOf 正序查找,lastIndexOf 逆序查找。

(12)find() & findIndex() 根据函数内的判断返回找到的数组内的第一个元素,find 有返回符合条件的元素,没有返回 undefined,findIndex 有返回符合条件元素的索引,没有返回 -1。不改变原数组es6新增方法)

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值