Men的博客

欢迎光临!

0%

算法之数组操作

数组去重

// 定义一个新数组,并存放原数组的第一个元素,然后将元素组一一和新数组的元素对比,若不同则存放在新数组中
function unique(arr) {
    var res = [arr[0]];
    for (var i = 0; i < arr.length; i++) {
        var repeat = false;
        for (var j = 0; j < res.length; i++) {
            if (arr[i] == res[j]) {
                repeat = true;
                break;
            }
        }
        if (!repeat) {
            res.push(arr[i]);
        }
    }
    return res;
}
// 思路:每次取出原数组的元素,然后再对象中访问这个属性,如果存在就说明重复
function unique(arr) {
    var res = [];
    var json = {};
    for (var i = 0; i < arr.length; i++) {
        if (!json[arr[i]]) {
            res.push(arr[i]);
            json[arr[i]] = 1;
        }
    }
    return res;
}
// 利用下标查询
function unique(arr) {
    var newArr = [arr[0]];
    for (var i = 0; i < arr.length; i++) {
        if (newArr.indexOf(arr[i]) == -1) {
            newArr.push(arr[i]);
        }
    }
    return newArr;
}

// 两个数组中相同的元素和不同的元素
// 合并两数组,并删除重复元素(代码类似于数组去重,只不过都是比较两个数组)

对数组进行反转

function reverae(arr) {
    var j = arr.length - 1;
    for (var i = 0; i < arr.length; i++) {
        var temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
        j--;
    }
}

获取数组中连续的元素

function fn(arr){
  var result = [],
      i = 0;
  result[i] = [arr[0]];
  arr.reduce(function(prev, cur){
    cur-prev === 1 ? result[i].push(cur) : result[++i] = [cur];
    return cur;
  });
  return result;
}

数组合并(先排序,再合并)

// 合并两个有序数组
function mergeOrder(arr1,arr2) {
    var result = arr1 +arr2;
    var m = 0;
    var n = 0;
    for (var i = 0; i < result.length; i++) {
        if (m == arr1.length) {
            result[i] = arr2[n++];
        }else if (n==arr2.length) {
            result[i] = arr1[m++];
        }else{
            if (arr1[m] < arr2[n]) {
                result[i] = arr1[m++];
            }else{
                result[i] = arr2[n++];
            }
        }

    }
    return result;
}