5.10 JS 数组去重 学习日志#1
参考文章1(Array.from()):https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from
参考文章2 (Set):https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Set
//问题:var arr=[1,1,1,2,3,4,5,6,12,341235,31,5];
//将此数组进行去重
//解决代码
window.onload=function () {
console.log(Array.from(new Set(arr)))
}
第一步:利用Array.from() 将数组浅拷贝一份;
Array.from()
方法从一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
Array.from(obj, mapFn, thisArg) :
-
mapFn(可选):在数组拷贝完成之后执行一次 map();
//参考代码 const array1 = [1, 4, 9, 16]; // pass a function to map const map1 = array1.map(x => x * 2); console.log(map1); // expected output: Array [2, 8, 18, 32]
- thisArg(可选):执行回调函数
mapFn
时this
对象。(暂时不知道啥意思)
拓展文章:
(【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法)https://www.cnblogs.com/echolun/p/7889848.html
第二步:利用Array.from()的参数 obj 新建一个Set对象
为什么是Set?
因为Set对象的定义:
Set
对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。
第三步:输出结果
其余拓展
数组去重合并
function combine(){ let arr = [].concat.apply([], arguments); //没有去重复的新数组 return Array.from(new Set(arr)); } var m = [1, 2, 2], n = [2,3,3]; console.log(combine(m,n)); // [1, 2, 3]
由上拓展出的apply方法
//apply() 方法与 call() 方法非常相似:
//在本例中,person 的 fullName 方法被应用到 person1:
//实例
var person = {
fullName: function() {
return this.firstName + " " + this.lastName;
}
}
var person1 = {
firstName: "Bill",
lastName: "Gates",
}
person.fullName.apply(person1); // 将返回 "Bill Gates"
由arguments拓展出的 不定参数与展开运算符(...)
参考文章( [js高手之路] es6系列教程 - 不定参数与展开运算符(...) ):https://www.cnblogs.com/ghostwu/p/7298462.html
撰写时间:2021.5.10 23:51 周一
作者:卧槽人才