「这是我参与2022首次更文挑战的第7天,活动详情查看:2022首次更文挑战」。
我个人觉得要想进大厂,就必须学习了解算法和数据结构,经历了多次面试之后,也知道了算法和数据结构的重要性,所以,我也打算从今天开始,进入学习,下载了一下电子书,边看书,边跟着书的例子来敲一下代码,下面就开始总结一下对算法和数据结构的学习吧。
第七天:继续了解数组
前几天写的都是es5的一些方法,现在我们来看看es6数组都有些什么方法。
可以先看看循环这方面,es6多了不少方法
-
for...of
除了一些方法,还有就是用for...of去对数组进行循环迭代。
const arr = [1,2,3,4,5] for(let i of arr) { console.log(i) }可以看到,for...of可以对数组进行循环迭代,i是每个数组的元素,所以输出的是1,2,3,4,5
-
keys
返回包含数组所有索引的@@iterator
for(let i of arr.keys()) { console.log(i) }这个时候的i就不是数组的元素了,它是每个元素在数组中的索引,所以上面的输出是0,1,2,3,4
-
values
返回包含数组中所有值的@@iterator
for(let i of arr.values()) { console.log(i) }其实这个和默认的for...of是一样的,这个时候的i也是数组的所有元素,所以和前面的输出一样,是每个元素的值1,2,3,4,5
-
entries
返回包含数组所有键值对的@@iterator
for(let i of arr.entries()) { console.log(i) }这个时候的i就不是单独的一个元素了,这个时候的i是一个数组,里面有两个元素,第一个是每个元素的键,第二个是每个元素的值,所以最后输出的是这样的
[0, 1] [1, 2] [2, 3] [3, 4] [4, 5]
其实大家通常都会这样使用
for(let [key,value] of arr.entries()) { console.log(key,value) }那没有这个的时候呢?我们是如何获取数组的键值对呢?
应该大部分人都是这么去获取吧
for(let i in arr) { console.log('key:',i,'value:',arr[i]) }这样也是可以获取到数组的键值对的
-
from
根据已有数组创建一个新数组,并不会改变原数组
const result = Array.from(arr, x => (x % 2 == 0));上面会创建一个新的数组result,里面的值偶数为true,基数为false,所以上面的输出是[false, true, false, true, false],感觉这个和map有点像,平时基本都用的是map,也没怎么用这个from
但其实它的主要功能不是上面这种操作,而是将一个类数组转为真正的数组
// ES5的写法 var arr1 = [].slice.call(arrayLike); // ['a', 'b', 'c'] // ES6的写法 let arr2 = Array.from(arrayLike); // ['a', 'b', 'c'] -
of
根据传入的参数创建一个新数组
const result = Array.of(1, 2, 3, 4, 5);上面会创建一个新的数组,result就是[1,2,3,4,5],当然,我们也可以复制已有的数组
const result2 = Array.of(...result);这个result2和result页是一模一样的,这个和Array.from(result)一样。of的作用可以用来代替new Array()