Open HuangHongRui opened 7 years ago
find() & findIndex()
均接受两个参数:
执行回调函数时,传入的参数分别为:
如果给定的值满足定义的标准,回调函数应返回true, 一旦回调函数返回true, find()方法 和 findIndex() 都会立即停止搜索数组剩余的部分。
二者的区别:
find()
方法返回查找到的值。findIndex()
方法返回查找到的值的索引。let num = [25,34,43,126,21,72];
console.log(num.find(n => n>55)) // 126
console.log(num.findIndex( n => n>55 )) // 3
通过find()查找到数组内大于55的第一个数值, 而findIndex() 定位到数组内大于55的第一个数值的位置
如要在数组中根据某个条件查找匹配的元素,那么选择find()
和findIndex()
方法可以完成任务;
如只是查找某个值匹配的元素,那indexOf()
和 lastIndexOf()
方法是更好的选择
fill()
方法 可以用指定的值填充一至多个数组元素。
当传入一个值时,fill()
方法会用这个值重写数组中的所有值
let nums = [2,5,7,8]
nums.fill(0)
console.log(nums.toString()) // 0,0,0,0
调用 nums.fill(0)
后,数组中的值均变为 0
如只想改变数组某一部分的值,
传入开始索引 & 不包含结束索引(不包含结束索引当前值)这两个参数即可:
let nums = [2,5,7,8]
nums.fill(1,2)
console.log(nums.toString()) // 2,5,1,1
nums.fill(0,1,3)
console.log(nums.toString()) // 2,0,0,1
如果开始索引或结束索引 为负值,
那这些值会与数组的length
属性相加来作为最终位置
如: 开始位置为 -1, 那索引的值实为 array.length - 1
.
copyWithin()
方法 与 fill()
方法相似。
也可以同时改变数组中的多个元素。
fill()
方法是将数组元素赋值为一个指定的值,
而 copyWithin()
方法则是从数组中赋值元素的值。
调用copyWithin()
方法时需要传入两参数:
如 复制数组前两个元素值到后两个元素Code:
let nums = [1,2,3,4,5]
// 从位置2开始粘贴
// 从位置0开始复制
nums.copyWithin(2,0)
console.log(nums.toString()) // 1,2,1,2,3
默认情况, copyWithin()
会一直复制到数组末尾的值,
但也可以提供可选的第三个参数来限制被重写元素的数量
第三个参数是不包含结束索引,
用于指定停止复制值的位置
let nums = [1,2,3,4,5,7,0,6,5,8]
nums.copyWithin(2,0,1)
console.log(nums.toString()) // 1,2, 1, 4,5,7,0,6,5,8
由于可选的结束索引被设置为1, 因此只有位于索引0的值被复制了, 数组中的其他元素保持不变。
copyWithin()
方法的所有参数都接受负值 [ 这点与fill()
方法一致 ]
Es6 延续了Es5 的一贯风格。 为数组添加了几个新的方法。
find()
findIndex()
1和2 可以协助开发者在数组中查找任意值:fill()
copyWithin()
3和4的灵感来自于定型数组的使用过程, 定型数组为Es6中的新特性,一种只包含数字的数组