本文主要是介绍【freecodecamp】多个数组求对等差分数组 Symmetric Difference,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
该题目的要求
创建一个函数,接受两个或多个数组,返回所给数组的 对等差分(symmetric difference) (△ or ⊕)数组.
给出两个集合 (如集合 A = {1, 2, 3} 和集合 B = {2, 3, 4}), 而数学术语 “对等差分” 的集合就是指由所有只在两个集合其中之一的元素组成的集合(A △ B = C = {1, 4}). 对于传入的额外集合 (如 D = {2, 3}), 你应该安装前面原则求前两个集合的结果与新集合的对等差分集合 (C △ D = {1, 4} △ {2, 3} = {1, 2, 3, 4}).
function sym(args) {//数组内部去重Array.prototype.distinct = function (){var arr = this,len = arr.length;arr.sort(function(a,b){ //对数组进行排序才能方便比较return a - b;});function loop(index){if(index >= 1){if(arr[index] === arr[index-1]){arr.splice(index,1);}loop(index - 1); //递归loop函数进行去重}}loop(len-1);return arr;};//返回两个数组的独有元素的函数function diff(arr1, arr2) {var newArr = [];function checkIfSame(arrx,arry){var arrDif = [];for(var i = 0;i < arry.length;i++){//如果是-1代表没有if (arrx.indexOf(arry[i]) == -1){arrDif.push(arry[i]);}}return arrDif;}var arrdif1 = checkIfSame(arr1,arr2);//arr2中的独有元素var arrdif2 = checkIfSame(arr2,arr1);//arr1中的独有元素newArr = arrdif1.concat(arrdif2);return newArr;}var currentArr = [];//所有的数组之间进行去重for(var i = 0 ; i < arguments.length; i ++){var nowarr = arguments[i].distinct();currentArr = diff(currentArr,nowarr);}console.log(currentArr);return currentArr;
}sym([1, 2, 3], [5, 2, 1, 4]);
这篇关于【freecodecamp】多个数组求对等差分数组 Symmetric Difference的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!