JS 数组去重 学习日志#1

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) :

  1. 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]
    
  2. thisArg(可选):执行回调函数 mapFn 时 this 对象。(暂时不知道啥意思)

拓展文章:

【JS】深拷贝与浅拷贝的区别,实现深拷贝的几种方法https://www.cnblogs.com/echolun/p/7889848.html

第二步:利用Array.from()的参数 obj 新建一个Set对象

为什么是Set?

因为Set对象的定义:Set对象是值的集合,你可以按照插入的顺序迭代它的元素。 Set中的元素只会出现一次,即 Set 中的元素是唯一的。

第三步:输出结果

JS 数组去重 学习日志#1

 

其余拓展

数组去重合并

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 周一

作者:卧槽人才

 

 

 

上一篇:将普通文件夹转为web文件夹


下一篇:使用ABLSTM 实现 human activity