silce()
- 定义:
Array.slice()方法返回指定数组的一个片段或子数组。它的两个参数分别指定了片段的开始和结束位置。返回的数组包含第一个参数指定的位置和所有到但不含第二个参数指定的位置之间所有的数组元素。如果指定一个参数,返回的数组将包含从开始位置到数组结束的所有元素。如果参数中出现负数,它表示相对于数组中最后一个元素的位置。如:-1指定了最后一个元素。
从定义来看比较容易懂, 值得注意的一点是:slice()不会修改调用的数组,好像在vue中不属于变异方法,有需要就可以大胆使用。但是实验的时候:正数没问题,但是为什么-1和其它负数都为空,难道不支持负数?怎么会呢?
filter()
定义:
fliter()方法返回的数组元素是调用的数组的一个子集。传递的函数是用来逻辑判定的:该函数返回true 或 false。调用判定函数就像调用forEach()和map()一样。如果返回值为true或能够转化为true的值,那么传递给判定函数的元素就是这个子集的成员,它将被添加到一个作为返回值的数组中。
实验了一下,感觉个vue中的过滤器差不多,他的第一句话:fliter()方法返回的数组元素是调用的数组的一个子集 ,就表明了它就是一个过滤器。
但是不明白参数(x,i)是什么意思,打印了一下:
打印完后,我猜测 fliter()中定义的逻辑判断函数支持两个参数,第一个参数为:数组的每一个元素,第二个为:数组的index。将数组中符合判断函数标准的元素return出去。
特点:filter()会跳过稀疏数组中的缺少的元素,他的返回数组总是稠密的。
如何压缩稀疏数组的空缺,明天再看~