JavaScript怎么样快速声明一个有默认初始值的数组呢?
通常情况下,这种需求本身很奇怪,一般业务来说都先创建一个空数组,然后一个个把业务元素push进去;或者是直接Array(100)创建一个默认都是undefined的特殊数组,它的特殊性表现在存储结构上,这种数组本质上是没有占用物理空间的,不信可以Array(4294967295)创建一个数组试试,在小内存计算机上也可以轻松创建。
但是如果一定需要有一个默认初始值,则可以采用Array.prototype.fill进行初始化填充。
Array(100).fill(0)
这样就能创建一个长度为100,每个元素都是0的数组了,但是在这种情况下,比较于Array(n)创建出来的特殊数组而言,每个0都是需要占用物理内存的,在实际项目中实在是不推荐。
javascript数组去重的方法是怎样的?
以前我们总看三大去重方式汇总啊,五大去重方式汇总啊。有时候为了方便使用,还要保存好几篇文章。
这次,一篇就足够你用的了!
Methods 1:
思路:先定义一个“新数组”,并存放“源数组”(待去重的数组,以下简称源数组)的第一个元素,然后将源数组和新数组的元素一一对比,若不同则存放在新数组中。
Methods 2:
思路:先将源数组排序,在与相邻的进行比较,如果不同则存入新数组。
Methods 3:
思路:利用对象属性存在的特性,如果没有该属性则存入新数组。
Methods 4:
思路:利用数组的indexOf下标属性来查询。
Methods 5:
思路:利用数组原型对象上的includes方法。
Methods 6:
思路:利用数组原型对象上的 filter 和 includes方法。
Methods 7:
思路:利用数组原型对象上的 forEach 和 includes方法。
Methods 8:
思路:利用数组原型对象上的 splice 方法。
Methods 9:
思路:利用数组原型对象上的 lastIndexOf 方法。
Methods 10:
思路:利用 ES6的set 方法。
进阶篇:画龙点睛,一行代码搞定
Methods 10_1:
思路:利用ES6拓展运算符(...)内部使用for...of循环,以及Set成员值都是唯一的特性
Methods 10_2:
思路:利用数组原型对象上的 filter函数以及ES6的Map对象保存键值对。任何值(对象或者原始值) 都可以作为一个键或一个值。