数组 是内存里一块连续的存储区域,可以通过指针(下标)查找该块区域内的所有元素。
JavaScript
Array
对象是用于构造数组的全局对象; 它是高阶的、类似于列表的对象。虽然 ECMAScript 数组与其他语言中的数组都是数据的有序列表,但与其他语言不同的是,ECMAScript 数组的每一项可以保存任何类型且不定长的数据。
数组的初始化方式:
// Array 构造函数
var colors = new Array(20); // 创建一个长度为20的数组,每个元素的默认值为undefined
var colors = new Array("red", "blue", "green"); // 长度为3的数组,元素分别为"red","blue","green"
// 当向构造函数里传入一个数字2时,意思为创建一个长度为2、初始值为undefined的数组,
// 如果是一个字符串"string",意思是创建一个长度为1,第一个元素为"string"的数组
// 字面量
var colors = ["a", "b", "c"];
var nums = [1] // 创建一个长度为1的数组,且第一个元素为1
// 因为JavaScript的数组元素是动态可变的,所以当只定义长度时,数组元素的初始值为undefined,如果是Java
方法从一个类似数组或可迭代对象中创建一个新的数组实例。
map(function(item, index, arr){})
<ul>
<li>1li>
<li>2li>
<li>3li>
<li>4li>
<li>5li>
ul>
var Uli = document.querySelectorAll('li');
var aLi = Array.from(Uli)
console.log(aLi)
console.log(Array.isArray(Uli))
console.log(Array.isArray(aLi))
经过Array.from()方法后,dom的元素数组成了真正的数组对象。
用于确定传递的值是否是一个 Array
- obj 需要检测的值
- 返回值为true或者false
方法创建一个具有可变数量参数的新数组实例,传入的参数为需要添加进数组的元素。
Array
实例。console.log(Array.of(1))
console.log(Array.of(1, '1', {a: 1}))
与构造函数new Array() 不同的是,当传入一个数字时,
构造函数是创建当前数字长度的数组,初始值为undefined,
Array.of()把当前数字作为数组的第一个元素
用于合并两个或多个数组。此方法不会更改现有数组,而是返回一个新数组。
// 以下日志实在断点情况下打印出来的,如果没有断点,计算机运行速度太快看不出来
var arr1 = [1, 2, {index: 1,name: 'hello'}]
var arr2 = [1, 'nihao']
var newArr = arr1.concat(arr2)
console.log(newArr)
arr1[2].index = 2
arr1[0] = 11
console.log(newArr)
方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象,原数组不会被修改。
// 日志截图是在断点情况下打印,非断点下没有影响
var arr1 = [1, 2, {index: 1,name: 'hello'}, 'string1']
var arr2 = arr1.slice(1, -1)
console.log(arr2)
arr1[2].name = 'world'
console.log(arr2)
通过删除现有元素和/或添加新元素来更改一个数组的内容,修改的是当前数组,返回值为被删除的数组。
var arr1 = [1, 2, {index: 1,name: 'hello'}, 'string1', 'world']
var arr2 = arr1.splice(1, 9, 'newitem1', 'newitem2')
console.log(arr1)
console.log(arr2)