如何获取两个数组的差异元素?提取数组a中不在数组b内的元素存入数组c
提取数组中独有的元素实现方案
要实现示例中a.compare(b)提取数组a中不存在于数组b的元素,有以下几种简洁的实现方式:
方法一:扩展数组原型(匹配示例调用方式)
利用数组的filter和includes方法快速过滤元素:
Array.prototype.compare = function(targetArr) { return this.filter(item => !targetArr.includes(item)); }; // 测试示例 let a = ['1', '2', '3']; let b = ['1', '2']; let c = a.compare(b); console.log(c); // 输出 ['3']
原理:filter遍历当前数组,通过includes判断元素是否存在于目标数组,保留不存在的元素。
方法二:兼容旧环境的原型扩展
如果需要兼容不支持includes的旧浏览器,可替换为indexOf:
Array.prototype.compare = function(targetArr) { return this.filter(item => targetArr.indexOf(item) === -1); };
原理:indexOf返回元素在数组中的索引,不存在则返回-1,以此作为判断依据。
方法三:独立函数(避免污染数组原型)
如果不想修改数组原型,可封装为独立函数:
function getUniqueElements(sourceArr, targetArr) { return sourceArr.filter(item => !targetArr.includes(item)); } // 测试示例 let a = ['1', '2', '3']; let b = ['1', '2']; let c = getUniqueElements(a, b); console.log(c); // 输出 ['3']
内容的提问来源于stack exchange,提问作者Matias Bertoni
相关产品推荐
相关产品推荐

