
返回这两个数组的对称差
本次练习我们需要写一个函数,比较两个数组,返回一个新的数组。这个新数组需要包含传入的两个数组所有元素中,仅在其中一个数组里出现的元素。如果某个元素同时出现在两个数组中,则不应包含在返回的数组里。换言之,我们需要返回这两个数组的对称差。
注意:返回数组中的元素可任意排序。
在介绍完整代码之前,我们先介绍下数组 indexOf() 方法的具体用法:
indexOf()方法返回在数组中可以找到一个给定元素的第一个索引,如果不存在,则返回-1。
语法:
arr.indexOf(searchElement[, fromIndex])
参数:
searchElement
要查找的元素
fromIndex 可选
开始查找的位置。如果该索引值大于或等于数组长度,意味着不会在数组里查找,返回-1。如果参数中提供的索引值是一个负值,则将其作为数组末尾的一个抵消,即-1表示从最后一个元素开始查找,-2表示从倒数第二个元素开始查找 ,以此类推。
注意:如果参数中提供的索引值是一个负值,并不改变其查找顺序,查找顺序仍然是从前向后查询数组。如果抵消后的索引值仍小于0,则整个数组都将会被查询。其默认值为0.
返回值:
首个被找到的元素在数组中的索引位置; 若没有找到则返回 -1
我们定义一个方法 diffArray , 该方法包含两个参数,分别为 arr1 和 arr2 ,该方法返回这两个数组的对称差的新数组。具体代码如下所示:
function diffTwoArray( arr1, arr2 ){var newArr = [];for (var i = 0; i < arr1.length; i++) {if (arr2.indexOf(arr1[i]) === -1) {newArr.push(arr1[i]);}}for (var i = 0; i < arr2.length; i++) {if (arr1.indexOf(arr2[i]) === -1) {newArr.push(arr2[i]);}}return newArr;}var newArr = diffTwoArray([11, 31, 52, 71], [71, 2, 52, 4, 31]);console.log(newArr);// => (3) [11, 2, 4]newArr = diffTwoArray(['路条编程', '阿里巴巴', '拼多多', '亚马逊'], ['京东', '美团', '拼多多', '头条', '亚马逊']);console.log(newArr);// => (5) ["路条编程", "阿里巴巴", "京东", "美团", "头条"]
文章转载自路条编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




