昨天看了红宝书数组这一部分的知识,今天来做一个小的整理,方便后期记忆。
Array.from()
概念:调用函数的方式:Array.from(arrayLikeOrIterable[,mapFunction[,thisArg]]);
里面的参数:
1.1、arrayLikeOrIterable:此参数为强制性参数,可以是一个类似数组的对象或一个iterable。
类似数组的对象的概念:具有length属性。只要有length属性,就可以认为这个对象类似于数组
var obj = { 0: 'a', 1: 'b', 2: 'c', length: 3 };
就像上方代码就是一个类似数组的对象。它不具备数组的特有的方法,比如push方法。还有就是类似数组的对象的length属性不是动态值,它不会像数组那样随着数据的变化而变化,如下方代码:
obj[3] = 'd';
obj.length // 0
哪些是类似数组的对象:函数的arguments对象,大多数的DOM元素,以及字符串。 iterable的相关概念:在es6中引入了新的Map对象和Set对象,而Map和Set无法通过下标遍历。因此为了统一集合新增了iterable类型,它包含了Array,Map,Set 1.2、mapFunction:可选的参数,mapFunction(item,index){...}是在集合中的每一项上调用的函数。返回值将插入到新的集合中。上个代码大家看下就懂了。
const someNumbers = { '0': 10, '1': 15, length: 2 };
Array.from(someNumbers, value => value * 2); // => [20, 30]
1.3、thisArg:可选参数,执行回调函数mapFunction时this对象。这个很少使用。
1.4、下面就说说Array.from的使用场景:
1.4.1、将类数组转化成数组
上面代码图片应该够详细了。
1.4.2、克隆一个数组
1.4.3、使用值填充数组
1.4.4、使用对象填充数组
1.4.5、数组去重
Array.of()
概念:Array.of()方法创建一个具有可变数量参数的新数组实例,而不考虑参数的数量和类型。
语法:
Array.of(element0[, element1[, ...[, elementN]]])
参数:任意个参数、按顺序成为返回数组中的元素; 区别:Array.of()和Array构造函数之间的区别在于处理整数参数;话不多说上图:
数组空位
概念:数组的空位是指某个位置没有任何值。
没有任何值不是undefined,undefined表示有值哦!
数组一般不建议有数组空位,因为数组的各种方法对数组空位的处理都不一样。这一部分请参考下面链接:juejin.cn/post/684490…
。