如何优雅的将多个数组合并成一个数组(去重)

本篇文章将纳入到常见JS算法中,笔者近期看到一篇关于常见JS算法原文地址(https://github.com/Chalarangelo/30-seconds-of-code#anagrams-of-string-with-duplicates)。

思考如何写一个方法将传递过来的多个未知个数的数组合并成一个数组并去除数组中的重复项?

这里会用到ES5的concat()方法和apply()方法,基础的for循环方法这里不进行阐述。

concat(arr1,arr2)方法接受多个数组元素,并将arr2中的元素拷贝到arr1

var arr1 = ['a', 'b', 'c'];
var arr2 = ['d', 'e', 'f'];

var arr3 = arr1.concat(arr2);

// arr3 is a new array [ "a", "b", "c", "d", "e", "f" ]

apply()方法会调用一个函数,apply方法的第一个参数会作为被调用函数的this值,apply方法的第二个参数(一个数组,或类数组的对象)会作为被调用对象的arguments值,也就是说该数组的各个元素将会依次成为被调用函数的各个参数。

export function concatArray(){
    let newArr = Array.prototype.concat.apply([], arguments)//没有去重复的新数组
    return Array.from(new Set(newArr))
}

const a1 = concatArray([12],[1,2,3]);
console.log('new arr',a1)
//[1,2,3]

const a2 = concatArray([1],[1,2,3],[4,3,6],[2,5,7]);
console.log('new arr',a2)
//[1,2,3,4,6,5,7]

这个方法是参考他人的思想转化过来的,其中Set()和Array.from()是ES6的方法,详情请读者自行搜索ES6手册。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值