数组简介
访问数组元素:“array[subscript]”
数组可以存储任何类型的数据
数组长度可以任意改变,不需要提前声明
数组元素个数:数组名.length
数组的定义 一维数组是使用 Array() 函数定义的
使用 Array() 函数创建更详细的数组对象
格式:
var 数组名 = new Array(); //数组下标从0开始
使用方括号[]直接声明和设置每个元素的值
//用数组存放相同类型的数据
var array = ['JS','Java'];
console.log(JSON.stringify(array));
//用数组存放不同类型的数据
var array = [1,"1",true,null,String(undefined)];
console.log(JSON.stringify(array));
二维数组
一维数组的每个元素都是一个数组,所以称为二维数组。如果二维数组的每个元素都是一个数组,那么它就是一个多维数组。
虽然数组中的元素类型可以不一致,但实际使用一般需要统一的数据类型。二维数组就是让每个子数组统一数据类型和意义
var array = [
['JAVA','java'],
['JS','js']
];
console.log(JSON.stringify(array,null,' '));
数组属性长度属性
length 表示数组中的元素个数
可以直接修改数组的长度属性。如果增加数组的length属性,数组中会出现空白元素;如果减少数组的length属性,则自动删除下标大于等于length的元素(实际场景中,一般认为是只读属性,不是只读属性)。直接修改数组的length属性)
原型属性数组操作
JS提供了很多操作数组和数组元素的函数,涵盖了常见的数组操作函数
新元素
新增元素分为三种,分别在数组尾部、中间、头部添加元素。
末尾的新元素(数组名.push)
使用push函数添加新元素时,数组长度自动加1js 数组操作类库,新元素设置为尾元素;当 push 函数接收到多个参数时,自动在尾部添加多个元素
var array = [1,2,3];
console.log(JSON.stringify(array));
array.push(4);
console.log(JSON.stringify(array));
array.push(5,6);
console.log(JSON.stringify(array));
在数组中间添加一个元素(数组名.splice)
JS支持向数组中的某个位置添加新元素,并自动调整其他元素的索引
数组名.splice(参数1,参数2,参数3,......,参数3)
参数1:新增元素插入的位置
参数2:从插入位置是否删除后续元素
参数3...n:插入n个新元素
var array = [1,2,3];
console.log(JSON.stringify(array));
array.splice(3,0,4);
console.log(JSON.stringify(array));
array.splice(4,0,5,6);
console.log(JSON.stringify(array));
array.splice(3,2,7); //从4号索引处开始删除,删除两个,4,5被删
console.log(JSON.stringify(array));
在数组的开头添加一个元素(数组名.unshift)
var array = [1,2,3];
console.log(JSON.stringify(array));
array.unshift(3,0,4);
console.log(JSON.stringify(array));
array.unshift(4,0,5,6);
console.log(JSON.stringify(array));
array.unshift(3,2,7,8,9);
console.log(JSON.stringify(array));
查找元素
查找元素有三种方式:从后到前、从前到后、按条件搜索
从前到后(数组名.indexOf(值))
从前向后搜索:数组的indexOf(value)从0开始向后查找value在数组中的位置,如果存在则返回该值对应的索引,如果不存在则返回-1
indexOf(value)
遵循规则:
如果value存在于数组中,返回与value全等的元素的索引
索引从0开始,如果存在,返回-1
indexOf(value)使用全等(===)进行比较
var array = [1,2,3];
console.log(JSON.stringify(array));
console.log('元素 1 的位置在:索引号'+array.indexOf(1));
从后到前(数组名.lastIndexOf(value))
和indexOf(value)一样,区别是从后往前搜索
按条件查找 (find(callback)) 删除元素 (array name.splice())
用splice函数删除指定下标的元素后js 数组操作类库,自动更新后续元素的下标,使索引连续。(删除操作删除一个元素而不更正其他元素的索引)
var array = [1,2,3];
console.log(JSON.stringify(array));
array.splice(0,2);
//参数1:索引号
//参数2:从索引号开始删除元素的个数
console.log(JSON.stringify(array));
替换元素(数组名.splice())
数组名.splice(parameter1, parameter2, parameter3, … , parameter3)
参数一:索引号
参数2:表示要删除多少个元素
参数3:表示替换的元素
var array = [1,2,3];
console.log(JSON.stringify(array));
array.splice(1,2,'a','a','a');
//从索引号1开始,删除两个,把三个字符a替换进去
console.log(JSON.stringify(array));
var array = [1,2,3];
array.splice(0,2,'a','a','a');
//从索引号0开始,删除两个,把三个字符a替换进去
console.log(JSON.stringify(array));
为 i++ 迭代数组迭代数组
var array = [1,2,3];
for(var i=0;i<array.length;i++)
console.log(JSON.stringify(array[i]));
for…in 遍历数组
var array = [1,2,3];
for(var key in array)
console.log(JSON.stringify(array[key]));
forEach 遍历一个数组
数组的 forEach() 方法接收一个回调函数作为参数,并对每个元素执行一次该函数
语法:
forEach(callback[,thisArg])
callback:必选参数,表示为每个元素执行的回调函数,该函数接收三个参数
形式:callback(element,index,array)
element:当前元素
index:元素对应的索引号
array:当前数组
thisArg:可选参数,表示执行callback时绑定的this对象
var array = [1,2,3];
array.forEach(function(element,index,array)
{
console.log('索引号:'+index,'元素:'+element);
});
数组排序
基于就地算法sort(callback)的排序方法
callback(a,b)
参数a、b表示数组的两个元素,sort将按照一定顺序使用两个数组元素作为参数调用callback回调,再根据callback的返回值(-1、0、1)调整元素a、b在数组中的位置
-1(小于0的数),表示a位于b的前面,否则a、b交换位置
1(大于0的数),表示a位于b的后面,否则a、b交换位置
0,表示a、b位置不需要交换
调用sort函数如果没有传递callback参数时,将根据数字大小或字符串的Unicode编码对元素排序
var array = [1,2,3,5,4];
array.sort();
console.log(array); //数字排序
var list = ['a','c','b'];
list.sort();
console.log(list); //字符排序
var compareScore = function(a,b){
if(a.score == b.score) return 0;
if(a.score > b.score) return 1;
if(a.score < b.score) return -1;
};
list = [
{name:'1',score:90},
{name:'2',score:80},
{name:'3',score:85}
];
list.sort(compareScore); //传递callback参数
console.log(list);
排序的稳定性指标是指每次排序的结果都是一样的。sort() 的稳定性取决于 callback()
如果 callback(a,b) 是稳定的,那么 a 和 b 的比较结果是稳定的,那么 sort() 是稳定的,反之亦然。
数组求和
使用数组的reduce函数(从前到后)或reduceRight函数(从后到前)进行累加
var sum=0;
var array = [1,2,3,5,4,5];
for(var i=0;i<array.length;i++)
sum += array[i];
console.log(sum);
sum=0;
var sum = array.reduce(function(subTotal,currentValue){
return subTotal+currentValue;
});
console.log(sum);
快速交换
var a=1,b=100;
var list = [a,b];
a = list[1];
b = list[0];
console.log(a,b);
暂无评论内容