数组去重,排序,重复次数,两个数组合并,两个数组去重,map(),filter(),reduce()

数组,冒泡排序,把数组从小到大排序

  function bubbleSort(array) {
  if (Object.prototype.toString.call(array).slice(8, -1) === 'Array') {
    var len = array.length,
      temp;
    for (var i = 0; i < len - 1; i++) {
      for (var j = len - 1; j >= i; j--) {
        if (array[j] < array[j - 1]) {
          temp = array[j];
          array[j] = array[j - 1];
          array[j - 1] = temp;
        }
      }
    }
    return array;
  } else {
    return 'array is not an Array!';
  }
};
var arr = [23, 34, 3, 4, 23, 44, 333, 444];
console.log(bubbleSort(arr));

数组,去重

  function unique(arr) {
  var hash = [];
  for (var i = 0; i < arr.length; i++) {
    if (hash.indexOf(arr[i]) == -1) {
      hash.push(arr[i]);
    }
  }
  return hash;
};
var arr2 = [2, 8, 5, 0, 5, 2, 6, 7, 2];
console.log(unique(arr2));

数组,数组中出现最多的元素和最多元素的次数,第二多元素和第二多元素的次数

  function aryMore(arr) {
  var i;
  var length = arr.length;
  var hash = []; //使用哈希数组
  for (i = 0; i < length; i++) {
    if (!hash[arr[i]]) hash[arr[i]] = 1; //没有初始化的数组元素为undefined,undefined++为NaN
    else hash[arr[i]]++;
  }
  var max = 0; //最多的次数
  var maxV; //出现最多的元素
  var second = 0; //第二多的次数
  var secondV; //出现第二多的元素
  hash.forEach(function (item, index) { //forEach函数会跳过空元素
    if (item > max) {
      second = max;
      secondV = maxV;
      max = item;
      maxV = index; //用索引来保存原数组的值
    } else if (item > second) {
      second = item;
      secondV = index;
    }
  });
  return {
    max,
    maxV,
    second,
    secondV
  };
}
var arr3 = [2, 2, 2, 2, 3, 4, 5, 4, 3, 1, 4, 4, 100, 100];
console.log(aryMore(arr3));

两个数组对比,取出不同的值

  function getArrDifference(arr1, arr2) {
  return arr1.concat(arr2).filter(function (v, i, arr) {
    return arr.indexOf(v) === arr.lastIndexOf(v);
  });
};
var arr4 = [0, 1, 2, 3, 4, 5];
var arr6 = [0, 44, 6, 1, 3, 9];
console.log(getArrDifference(arr4, arr6));

两个数组对比,取出相同的值

  function getArrEqual(arr1, arr2) {
  let newArr = [];
  for (let i = 0; i < arr2.length; i++) {
    for (let j = 0; j < arr1.length; j++) {
      if (arr1[j] === arr2[i]) {
        newArr.push(arr1[j]);
      }
    }
  }
  return newArr;
}
var arr7 = [0, 1, 2, 3, 4, 5];
var arr8 = [0, 4, 6, 1, 33, 9];
console.log(getArrEqual(arr7, arr8));

合并两个数组,去重

  function concatAry(arr1, arr2) {
  //不要直接使用var arr = arr1,这样arr只是arr1的一个引用,两者的修改会互相影响
  var arr = arr1.concat();
  //或者使用slice()复制,var arr = arr1.slice(0)
  for (var i = 0; i < arr2.length; i++) {
    arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;
  }
  return arr;
};
var arr9 = [0, 1, 2, 3, 4, 5];
var arr10 = [0, 4, 6, 1, 3, 9];
console.log(concatAry(arr9, arr10));

合并多个数组,去重

  function concatAryMore(arr1, arr2, arr3) {
  if (arguments.length <= 1) {
    return false;
  }
  var concat_ = function (arr1, arr2) {
    var arr = arr1.concat();
    for (var i = 0; i < arr2.length; i++) {
      arr.indexOf(arr2[i]) === -1 ? arr.push(arr2[i]) : 0;
    }
    return arr;
  }
  var result = concat_(arr1, arr2);
  for (var i = 2; i < arguments.length; i++) {
    result = concat_(result, arguments[i]);
  }
  return result;
};
var arrMore1 = ['a', 'b'];
var arrMore2 = ['a', 'c', 'd'];
var arrMore3 = [1, 'd', undefined, true, null];
console.log(concatAryMore(arrMore1, arrMore2, arrMore3));
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值