&&前端学习&&集合排序

这篇博客探讨了如何在前端开发中处理数组,特别是集合排序和去重的问题。作者提供了一个使用for循环和indexOf()方法的入门级解决方案,强调去重后的元素应保持它们在原始数组中的顺序,而不是按数值排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

要求

编写一个带有两个或更多数组的函数,并按原始提供的数组的顺序返回一个新的唯一值数组。

换句话说,所有数组中出现的所有值都应按其原始顺序包括在内,但最终数组中不得重复。

去重后的数字应按其出现在参数中的原始顺序排序,最终数组不应按数字大小进行排序。

如有疑问,请先浏览下方的测试用例。

No。1

function uniteUnique(arr1, arr2, arr3) {
  var finalArray = [];
  for (var i = 0; i < arguments.length; i++) {
    var arrayArguments = arguments[i];
    for (var j = 0; j < arrayArguments.length; j++) {
      var indexValue = arrayArguments[j];
      if (finalArray.indexOf(indexValue) < 0) {
        finalArray.push(indexValue);
      }
    }
  }

  return finalArray;
}

// test here
uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

创建空数组
for循环对比二维数组
方法算是入门级别了
indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。

No.2

function uniteUnique(arr) {
  var args = [...arguments];
  var result = [];
  for (var i = 0; i < args.length; i++) {
    for (var j = 0; j < args[i].length; j++) {
      if (!result.includes(args[i][j])) {
        result.push(args[i][j]);
      }
    }
  }
  return result;
}

uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

No。3

function uniteUnique(arr1, arr2, arr3) {
  var newArr;
  //Convert the arguments object into an array
  var args = Array.prototype.slice.call(arguments);
  //Use reduce function to flatten the array
  newArr = args.reduce(function(arrA, arrB) {
    //Apply filter to remove the duplicate elements in the array
    return arrA.concat(
      arrB.filter(function(i) {
        return arrA.indexOf(i) === -1;
      })
    );
  });

  return newArr;
}

// test here
uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

No.4

function uniteUnique() {
  var concatArr = [];
  var i = 0;
  while (arguments[i]) {
    concatArr = concatArr.concat(arguments[i]);
    i++;
  }
  uniqueArray = concatArr.filter(function(item, pos) {
    return concatArr.indexOf(item) == pos;
  });
  return uniqueArray;
}

// test here
uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

NO.5

function uniteUnique(...arrays) {
  const flatArray = [].concat(...arrays);
  return [...new Set(flatArray)];
}
uniteUnique([1, 3, 2], [5, 2, 1, 4], [2, 1]);

高级的方法来了

NO.6

function uniteUnique(...arr) {
  return [...new Set(arr.flat())]
}

// Or as an arrow function
const uniteUnique = (...arr) => [...new Set(arr.flat())]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值