js算法题(3)

1、【去除一个数组中的重复的,且按升序排序】

 function pai(arr) {
        var result = [];
        var i;
        for (i=0;i<arr.length; i++) {
            if ( result.indexOf(arr[i]) == -1 ){
                result.push(arr[i]);
            }
        }
        return result.sort(function (a,b) {
            return a-b;
        });
    }
    console.log(pai([11,23,18,14,7,6,3]));

注意:
sort() 方法用于对数组的元素进行排序
排序顺序可以是字母或数字,并按升序或降序。默认排序顺序为按字母升序
当为数字时按字母顺序排列时较大数将排在较小数前面。即9可以排在2前;
用sort(function(a,b){return a-b})即可改为升序;
用sort(function(a,b){return b-a})即为降序

var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});

输出结果:1,5,10,25,40,100

var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});

输出结果:100,40,25,10,5,1
2、【计算出一组数中最大的差值】

    function getMaxProfit(arr){
        var min = arr[0];
        var max = arr[0];
        for(var i=0;i<arr.length;i++){
            if(arr[i]<min)
                min = arr[i];
            if(arr[i]>max)
                max = arr[i];
        }
        return max - min;
    }
    console.log(getMaxProfit([1,2,5,7,18]));

其中:该题使用迭代不断地进行比较,将最小值赋给min,最大值赋给max,从而找出该数组中的最大最小值,而一个数组中,最大值和最小值的差值即为该数组中的最大差值。
3、【排序两个已经排好序的数组】

function paixu(a,b){
    if (!a || !b) {
        return;
    }
    var one = a[0];
    var two= b[0];
    var i=1;
    var j=1;
    var res = [];
    while(one || two){
        if ((one && !two) || one <= two) {
            res.push(one);
            one = a[i++];
        }
        else{
            res.push(two);
            two = b[j++];
        }
    }
    return res;
}
console.log(paixu([2,5,7,9], [1,3,6,11]));

4、【把多为数组拆为一维数组】

    var arr=[1,[2,3],[[4,5,6],[7,8,9]]];
     var list=[];
     function NewArray(array){
     for(var i=0;i<array.length;i++)
     {
     //检测是否为数组
     if(Array.isArray(array[i]))
     {
     NewArray(array[i]);
     }
     else{
     //添加当前不是数组的值;
     list.push(array[i]);
     }
     }
     }
     NewArray(arr);
     console.log(list);

注:

isArray() 方法

用于判断一个对象是否为数组
如果对象是数组返回 true,否则返回 false。
格式
Array.isArray(obj)
其中参数obj是必需要有的指的是判断的对象。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值