C2--数组
数组式编程语言中的内建类型。
1.数组定义
一个存储元素的线性集合(对象),元素可以通过索引(属性--->字符串)来任意存取,索引通常是数字,用来计算元素之间存储位置的偏移量。
JavaScript中的数组是一种特殊的对象。
2.使用数组
-
创建数组
-
[]操作符
var numbers = []; var numbers = [1,2,3,4,5]数组中的元素不必是同一种数据类型
-
使用Array的构造函数
var numbers = new Array(); //传入一组元素作为数组的初始值 var numbers = new Array(1,2,3,4,5); //传入一个参数,指定数组的长度 var numbers = new Array(10);
-
可以调用Array.isArray(对象)来判断一个对象是否是数组
- 读写数组
循环遍历
-
由字符串生成数组
调用字符串对象的split()方法通过分隔符创建数组。
-
对数组的整体性操作
将一个数组赋给另外的数组
-
浅复制
(为被赋值的数组增加新的引用新数组依然指向原来的数组)
-
深复制
(将原数组中的每一个元素都复制一份到新数组)
//深复制函数 function copy(arr1,arr2){ for (var i = 0;i < arr1.length;++i){ arr2[i] = arr1[i]; } }
-
3.存取函数
-
查找元素
-
indexOf()
查找传进来的参数在目标数组里是否存在:
如果包含该参数,返回数组中的索引;
如果不包含,返回-1。
(多个与参数相同的元素,返回第一个索引)
-
lastIndexOf()
返回相同元素中最后一个的索引,
如无相同元素,返回-1。
-
-
数组的字符串表示
-
join()
可传入分隔字符串的符号。
-
toString()
两种方法均可将数组转化为逗号分隔的字符串
当直接对一个数组使用print()函数时,系统自动调用toString方法。
-
-
由已有数组创建新数组
-
concat()
合并多个数组,创建一个新数组。
发起者 数组,参数 数组(被连接到发起者的后面)。
-
splice()
截取一个数组的子集创建一个新数组。
第一个参数:截取的起始索引;
第二个参数:截取的长度。
(可为一个数组增加或移出元素,改变原数组)
-
4.可变函数
-
为数组添加元素
-
push()
将一个元素添加到数组末尾
(也可使用数组的length属性为数组添加元素)
var nums = [1,2,3,4,5]; nums.push(6); nums[nums.length] = 7; -
unshift()
将(一个或多个)元素添加在数组的开头。
var nums = [2,3,4,5]; var newnum = 1; nums.unshift(newnum);//1,2,3,4,5 nums = [3,4,5]; nums.unshift(1,2);//1,2,3,4,5
-
-
从数组中删除元素
-
pop()
删除数组末尾的元素,
返回删除元素的值。
-
shift()
删除数组的第一个元素,
返回删除元素的值。
可使用变量保存删除的元素。
-
-
从数组中间位置添加和删除或替换元素
-
splice
参数:
- 起始索引(开始添加元素的地方)
- 需要删除的元素个数(添加元素时该参数设为0)
- 想要添加进数组的元素(数组/任意的元素序列)
-
-
为数组排序
-
reverse
将数组中元素的顺序进行翻转
-
sort
-
字符串类型,对数组进行排序(按照字典顺序)
-
数字类型
传入比较函数(例:简单的相减操作)
-
function compare(num1,num2){ return num1-num2; } var nums = [3,1,2,100,4,200]; nums,sort(compare); print(nums);//1,2,3,4,100,200 -
-
迭代器方法
- 不生成新数组的迭代器方法
-
forEach()
参数:一个函数,对于数组中的每个元素进行操作。
-
every()
测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。
-
some()
测试是否至少有一个元素可以通过被提供的函数方法。该方法返回一个Boolean类型的值。
-
reduce()
对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
- 累加法,元素求和
- 将数组中的元素连接成一个长的字符串
-
reduceRight()
接受一个函数作为累加器(accumulator)和数组的每个值(从右到左)将其减少为单个值。
与reduce()方法的区别是,该方法从右至左执行。
- 生成新数组的迭代器方法
-
map()
对每个元素执行操作,返回新数组。
-
filter()
创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。
-
二维和多维数组
-
创建二维数组
-
处理二维数组的元素
- 按列访问
外层循环对应行,内层循环对应列。
- 按行访问
外层循环对应列,内层循环对应行。
-
参差不齐的数组
数组中每行元素个数彼此不同,通过length计算。
-
-
对象数组
-
对象中的数组