JavaScript 数组及数组函数常用方法(完全版)

一、数组定义

保存任意类型的数据集合

(1)构造函数方式实现: var arr = new Array()

可以制定数组的长度

(2) var a = [];

二、数组数据操作

(1)赋值方式

var a1 = [];

a1[0] = "hello";

var a2 = ["a","b"];

a2[1] = b;

(2)指定长度

var arr = new Array(3)  

  长度为3的数组

arr[0] --> undefined

arr.length;

var arr = [,,];

arr[1] --> undefined

(3)数组的遍历

var arr = [23,24,25,26]; 下标从0开始

[1]   for (var i =0; i < arr.length; i++){    

  arr[i];

  }

[2]   for in

  for(var i in arr){ 

  }

(4)数组的添加和删除

var arr = [34,56,12];

push(88); 在数组末尾添加数据,对原数组进行修改,返回值为修改后的数组长度

pop(); 在数组末尾删除一个数据 返回的是被删除的元素

unshift(); 在数组起始添加数据 对原数组进行修改,返回值为修改后的数组长度

shift(); 在数组起始删除一个数据 返回的是被删除的元素

三、数组的操作方法

1、reverse() :对原数组进行翻转

var arr = [1,2,3,4,5,6];

arr.reverse();

[ 6,5,4,3,2,1 }

2、join(); 制定分隔符 将数组转换为字符串 生成新的字符串

var a = "1,2,3,4,5"

var b = a.split(",");

b.join(""); 12345

3、concat(); 连接数组,将数据添加到数组的末尾,不修改原数组 生成新的数组,只能打散一维数组

不会打散数组中包含的数组

var a = "1,2,3,4,5"

var b = "6,7";

a1.concat(b);

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

var b = [6,7];

console.log(a.concat(b)); [1, 2, 3, 4, 5, 6, 7]

console.log(a.concat(55,66)); [1, 2, 3, 4, 5, 55, 66]

console.log(a.concat([88,99],[11,22]))[1, 2, 3, 4, 5, 88, 99, 11, 22]

console.log(a.concat([[11,22]],[33,44],"abc"));[1, 2, 3, 4, 5, Array(2), 33, 44, 'abc']

4、slice() 截取子数组 不修改原数组 生成新的数组

起始不包含 终止包含 

如为负数,由右向左倒数截取

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

a.slice(2,4) [3,4]

a.slice(1,4) [2, 3, 4]

a.slice(2) [3, 4, 5]

a.slice(2,10) [3, 4, 5]

a.slice(-4,-2) [2, 3]

5、splice() 增加和删除数组元素

splice(arg1,arg2,arg3...)

arg1 = 起始位置

  如只有一个参数,表示从起始位置删除所有的元素,返回的是被删除的元素

  如果第一参数为负数,则从右向左查找

arg2 = 删除元素个数

  如果有两个参数,表示被删除的元素个数

  如果第二个参数为负数,默认变为0

arg3及后面所有参数 要插入数组中的元素

  var a= [1,2,3,4,5,6,7]

  a.splice(1,2,3,4,5) [1,3,4,5,4,5,6,7]

    从下标1处删除两个元素,把新添加元素3,4,5 添加到删除位置处

  b = a.splice(2)  a = [1,2] / b = [3,4,5,6,7]

  a.splice(2,2) [1,2,5,6,7] 

  a.splice(2,0) [1,2,3,4,5,6,7]

  a.splice(2,0,0,0,0) [1,2,3,0,0,0,4,5,6,7]

  a.splice(-2,-3,7,8) [1,2,3,4,5,6,7,8,7,8]

四、数组检测

var arr = [];

1、typeof(arr) --> Object

2、Array.isArray(a1) true

3、if(arr instanceof Array){} true

4、arr.constructor == Array true

五、数组的toString()方法

所有对象都有toString() valueOf() toLocaleString()

toString():每个值的字符串形式,以,拼接数组转字符串

六、数组的下标

var arr = [0,1,2,3,4,5];

arr[0] -- > 0

范围:0 - 2^32

arr[true] undefined

obj = {name:"tt"}

arr[true] -- > 当作obj处理

arr[-2] undefined

arr[1.6] undefined

下标可以是逐渐递增的表达式

var arr = [];

for (var i = 0;i<10;i++){
arr[i++] = i;

}

七、数组函数

数组函数

1、indexOf() 返回数组中第一个找到的元素的位置,不存在返回 -1

2、forEach()

数组.forEach(function(遍历元素值,下标,当前数组){})

var arr = [1,2,3,4,5,6,7,8,9,10]

arr.forEach(function(item, index,arr) {

  console.log(item,index)

  item数组值 index数组下标 arr数组本身

})


3、map() 对数组的每一项进行遍历


var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
var arr2 = arr.map(function (item, index, arr) {
return item * 2;
}).map(function (item, index){ --链式调用
return item * 10;
});

***** map()与forEach的区别

1、forEach只是遍历,map可以生成新的数组

2、map比forEach速度更快

3、map可以进行链式调用

4、filter() 数据过滤

数组.filter(function(遍历元素值,下标,当前数组){})

(1)返回新数组,不对原数组修改

(2)对返回true的结果过滤,false的结果忽略

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10];

提取出 > 30的数据

var arr2 = arr.filter(function(item){

  return item > 5;

})

5、reduce() 接受一个函数作为累加器,数组中的每一个值,从左到右开始缩减

最终计算为一个值

数组.reduce(function(初始值,遍历元素值,下标,当前数组){},赋初始值(可省略))

a1 = [1,2,3,4,5];

a2 = a1.reduce(function(init,value,index,arr){

return init + value;

// 将init value 逐次累加 返回最终结果

})

6、some() 判读数组是否有满足条件的元素 相当于||

数组.some(function(遍历元素值,下标,当前数组){})

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

arr.some((item,index) =>{

  return item > 6;

});

true

返回Boolean类型,true: 如果找到了满足条件的元素,返回true则循环结束,跳出循环体

  false: 没有找到,循环继续。

  函数的执行次数 不等于数组的长度

7、every() 检测数组中所有元素是否都满足指定条件 相当于&&

数组.every(function(遍历元素值,下标,当前数组){})

有一项不满足就返回false,都满足才返回true

函数的执行次数不一定等于数组长度

var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

arr.every((item) =>{

  return item > 0;

});

你可能感兴趣的:(javascript,javascript,前端,开发语言)