前言
Javascript虽是一种动态类型、弱类型、基于原型的语言, 但功能强大, 可以实现各种各样的对数据操作, 这些操作其实也是万变不离其宗, 都是由简单的API一步步实现的。
前言是我随便乱码的, 哈哈哈。
这是 Array 篇。
Array
和String相同, 在控制台中:
创建数组
构造数组
无参数
创建了一个空数组
单个参数
创建了一个含有8个空值的数组(数组长度为8)
当然, 传入的参数也可以是动态的数值, 如轮播图中小点的数量:
this.dots = new Array(this.children.length)
多个参数
以 , 为间隔, 传入多少个参数, 数组长度就是多少
字面量创建数组
最常用的方式, 直接将一个数组赋值给一个变量, 直接传入的就是初始值
常用的数组操作方法(增删改查)
长度和索引
数组长度 length
和字符串一样, 数组也是拥有长度属性的, 直接使用.length即可查看
当然, 数组长度也可以通过对 .length 赋值进行改变, 长度变化后数组的值也会产生相应的变化:
长: 多出来的长度会用 空值 进行填充
短: 减少了的则从数组的尾部开始删除
数组索引
当然, 字符串也能通过下标索引获取对应index的数值: arr[index]
也可以修改数组对应的索引值:
还可以通过修改索引来改变数组的长度:
数组的添加和删除
常用的内置方法有4种: pop() / push() / shift() / unshift()
这4种方法都会改变原有数组
pop()
删除数组中最后一位值, 并返回这个值, 就像单词的意思, 弹出 ....
push()
添加一个值到数组的最后一位, 参数即是需要添加的值, 返回值是新数组的长度
当然, 也可以push多个值, 只需要直接传入即可:
既然有关于数组最后一位的操作, 那么也会有关于第一位的操作, 这4种方法就是两两对应的
shift()
用于删除数组中的第一位值, 并返回该值
unshift()
与shift()相反, 用于添加一个值到数组的第一位, 返回的为新数组的长度
当然, 在操作数组中不可能只操作头和尾, 在数组的内置方法中, 还有一个splice(),
不仅可以执行添加, 也能对数组的值进行删除
and, 该操作也是对原数组进行更改的
splice()
详细的语法是: arrayObject.splice(index,howmany,item1,....itemN)
index: 执行添加/删除操作的位置, 负数情况下则从数组结尾开始算起
howmany: 需要删除值的数量, 为0的情况下就是不删除, 也就是直接添加item
item1,....itemN: 需要添加的新值, 可以不添加
- - - - - - - -
删除操作, 会返回从数组中删除的值
删除的目标是包含 arr[index] 的
把第二位删除:
- - - - - - - -
添加操作, 是在选择到的 arr[index] 前插入item
返回的是删除的值, 在添加的操作下, 当然是空值[ ]
数组的排序
数组中有内置的排序方法: reverse() / sort()
这两个方法都会对原数组产生改变
reverse()
该方法可以将数组反转, 逆向排序:
sort()
sort()比reverse()更加强大, 可以根据传参(也可以接收一个回调函数, 按函数返回值排序)按我们想要的方式对数组排序, 即使是无参数时, 也会按照ASCII码大小排序
执行后返回值是新的数组
无参数:
有参数, 从小到大排序:
数组的分割和组合
concat()
用于将两个数组结合成一个新的数组, 返回值是新的数组
但不会对原数组产生影响
slice()
该方法用于分割数组, 可以接收两个参数, 第一个是分割的起始索引( 包括arr[start] ), 第二个是结束索引 ( 不包括arr[end] )
返回值是新的数组
参数可以为负, 执行该方法不会影响原数组
数组转化为字符串
join()
之前在字符串内容提到的join终于登场啦
传递的参数也是参照物, 没有参数则默认为根据 , 进行分隔
该方法返回的是转换后的字符串, 对原数组不产生改变
数组的遍历
遍历数组有很多方法, 其中 ES6 又增加了几个, 使得遍历数组的方法更加丰富。
map()
返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。
参考文: https://www.cnblogs.com/leejersey/p/5462427.html
传入一个数组, 截取其中的group.title的第一位并返回, 可以做类通讯录组件使用的
return this.data.map((group) => { // stringObject.substr(start,length) // 可在字符串中抽取从 start 下标开始的指定数目的字符 return group.title.substr(0, 1)})
indexOf()
返回在该数组中第一个找到的元素位置,如果它不存在则返回-1。
filter()
创建一个新的匹配过滤条件的数组。
forEach()
为每个元素执行对应的方法。
arr.forEach(function(item, index, array) { // 遍历数组所有的元素})
every()
判断所有元素是否都符合条件。
some()
some判断是否至少有一个元素符合条件。
reduce()
可以实现一个累加器的功能,将数组的每个值(从左到右)将其降低到一个值。
for-of
ES6中新增的对数组的遍历接口。
v-for
vue.js中提供的对数组等具有Iterator接口数据的遍历方法。