Arrary,应该在js中是常见的数据类型,自己在平时开发中,也就使用数组增删改查的API,并没有深入的去了解它。js中的数组跟其它语言最大的不同是,每个槽位可以储存任意类型的数据,数组也是动态大小,会随着数据添加而自动增长。
一、创建数组
- 使用Arrary构造函数
let why = new Array() // 构造函数 let text1 = new Array(3) console.log(text1.length) // 只有长度,没有内容 let text2 = new Array('abc', 'nba', 'cba') console.log(text2) // ["abc", "nba", "cba"] 创建出包含3个元素的数组 ps:使用构造函数时候,可以省略new操作符
- 数组字面量
let text1 = ['abc', 'nba', 'cba'] // 创建三个元素的数组 let text2 = [] // 创建一个空数组 let text3 = ['abc', 'nba', ] // 包含2个值的数组 consol.log(text3[2]) // undefined
- es6中新增创建数组的静态方法: from() 和 of()
from类数组转换成数组实例
of一组参数转换成数组实例console.log(Array.from('nba')) // ["n", "b", "a"] 字符串被拆分成单字符的数组 // 数组的集合 let text1 = new Set(['nba', 'cba']) // Set(2) {"nba", "cba"} let c = Array.from(text1 ) // ["nba", "cba"] // 数组的映射 let text2 = new Map().set(1,1) let a = Array.from(text2) // [[1, 1]] 待补充。。。。。。
console.log(Array.of(1, 2, 3, 4)) // [1, 2, 3, 4]
二、数组空元素
- 使用字面量数组时候,可以使用逗号来创建空位
let opts = [,,,,,] // [empty × 5] 新增的es6语法把空位当成存在元素,只不过值为undefined for (item item of opts) { alert(item) } // undefined undefined undefined undefined undefined
三、数组索引
- 要取得或者设置数组的值,需要使用中括号【】并填写相对应的索引值即可
ps: 索引小于数组包含的元素数,可以返回储存相对应元素,也可以设置数组;索引大于数组最大索引,则数组长度会自动将索引值+1let text1 = ['abc', 'nba'] console.log(text1[0]) // abc text1[1] = 'demo' // 修改第二项 text2[2] = 'cba' // 新增第三项
四、数组类型的判断
- instance of 和 isArrary
有两种方法可以确定数组是数组还是对象
这两个解决方案有什么区别?Array.isArray(item) item instanceof Array
a、isArray是一个ES5方法,所以不支持旧的浏览器,但它可靠地确定一个对象是否是一个数组。 b、instanceof只检查Array.prototype是否在对象的[[Prototype]]链上。它在跨框架检查数组时失败, 因为用于实例的Array构造函数可能与用于测试的数组不同。