如何移除random数组中与names数组重复的元素?
JavaScript数组去重:移除两个数组的重复元素
先明确需求:从random数组中剔除所有在names数组里出现过的元素,得到目标数组。
原始数组:
const names = ["Daniel", "Lucas", "Gwen", "Henry", "Jasper"]; const random = ["hi", "Lucas", "apple", "banana", "Jasper", "hello", "meow"];
方法一:使用filter + includes
这是最直观的写法,适合数组元素不多的场景:
const newArr = random.filter(item => !names.includes(item)); console.log(newArr); // 输出:["hi", "apple", "banana", "hello", "meow"]
原理:filter遍历random的每个元素,用includes检查当前元素是否存在于names中,取反后留下不在names里的元素。
方法二:用Set优化性能
如果names数组元素较多,includes的遍历会影响效率,换成Set的has方法(时间复杂度O(1))会更高效:
const nameSet = new Set(names); const newArr = random.filter(item => !nameSet.has(item)); console.log(newArr); // 输出:["hi", "apple", "banana", "hello", "meow"]
原理:先把names转成Set集合,再用filter结合has判断元素是否存在,避免重复遍历数组。
内容的提问来源于stack exchange,提问作者Happy1234
相关产品推荐
相关产品推荐

