zoukankan      html  css  js  c++  java
  • 数组练习

    1.编写尽可能简洁的javascript代码,找到在第一个数组array1中出现,而在第二个数组array2中没有出现的数字。

    var ary1=[1,2,3,4],ary2=[1,2,5,7]
      function findSpecial(ary1,ary2){
    //    ary2为什么转换,indexOf在数组中IE6/7有兼容性问题,字符串没有这个问题
        var str=ary2.join("");
        var n=[];
        for(var i=0;i<ary1.length;i++){
          var cur=ary1[i];
          if (str.indexOf(cur)==-1){
            n.push(cur)
          }
        }
        return n;
      }
    console.log(findSpecial(ary1,ary2))

    2.编写函数,用于过滤一个数组内重复的元素,并用这些元素重构一个新的数组,新数组内也不能有重复元素。

    var arrNum = [1,4,1,1,3,3,4,6,7,8,3,7,0,11,22,22];
    //    数组去重复
      function noRepetition(ary){
        var result=[];
        var obj={};
        for(var i=0;i<ary.length;i++){
          var cur=ary[i];
          if (!obj[cur]){
            obj[cur]=cur;
            result.push(cur)
          }
        }
        return result
      }
      console.log(noRepetition(arrNum))

    3.现有一个数组(元素为数字,并且有可能重复),请给Array.prototype增加一个方法(方法名自取),该方法能去掉数组中全部最大和最小的数字。 

      Array.prototype.deleteTwoN=function(){
        var ary=this.sort(function(a,b){return a-b});
        ary.shift();
        ary.pop();
        return ary
      };

    4.如何准确判断一个javascript对象是数组? 

    if(Object.prototype.toString.call(a) == '[object Array]'){
        //是数组对象
    }

    5.请写出一个函数,功能是删除数组的指定下标元素。

     

    Array.prototype.del=function(index){
      if (!isNaN(index)&&index<this.length){
        this.splice(index,1)
      }
    }
      ary.del(3);

    6.请写一个函数removeVoid(arr),删除该数组中值为“null,undefined”的项,返回原数组。

      function removeVoid(ary){
        var temp=ary;
        for(var i= 0;i<temp.length;i++){
          console.log(temp[i])
          if (!temp[i]){
            temp.splice(i,1);
            i--;
          }
        }
        return temp;
      }

    7.用js实现随机选取10~100之间的10个数字,存入一个数组,并排序。

    //一、编写随机数函数
      function rn(n,m){
    //    1.强制转换参数为数字
        var n=Number(n);
        var m=Number(m);
    //    2.判断有一个不是有效数字就随机返回[0,1)
        if (isNaN(n)||isNaN(m)){
          alert("我不是有效数字")
          return Math.random();
        }
    //    3.n,m顺序有变,调整
        if (n<m){
          var temp=n;
          n=m;
          m=temp;
        }
        return Math.round(Math.random()*(n-m)+m)
      }
    //二、编写排序,此处使用冒泡排序
    function bubbleSort(ary){
      var temp=null;
    //  发个誓,false假设没有调换位置
      var flag=false;
      for (var i=0;i<ary.length-1;i++){
        for(var j=0;j<ary.length-i;j++){
          if (ary[j]>ary[j+1]){
            temp=ary[j];
            ary[j]=ary[j+1];
            ary[j+1]=temp;
    //        调换位置改flag
            flag=true;
          }
        }
    //    外层循环判断flag,调换了,还原flag,没调换出去
        if (flag){
          flag=false
        }else{
          break
        }
      }
      return ary
    }
    //三、获取10个10-100随机数,并排序
      function getTen(){
        var ary=[];
        for(var i=0;i<10;i++){
          ary.push(rn(10,100))
        }
        return bubbleSort(ary)
      }
      console.log(getTen())

    8.把两个数组合并,并删除第二个元素。

    var array1 = ['a','b','c'];
    var array2 = ['d','e','f'];
    var array3=array1.concat(array2);
        array2.length=0;

    9.根据每个元素的i属性,由小到大排序如下数组。

    //一、冒泡排序
    var ary=[{i:5,v:1},{i:2,v:4},{i:3,v:2},{i:1,v:5},{i:4,v:3}];
    var temp=null;
    var flag=false
      for(var i=0;i<ary.length-1;i++){
        for(var j=0;j<ary.length-i-1;j++){
    //      当前项[i]与后一项[i]作比较
          if (ary[j]["i"]>ary[j+1]["i"]){
            temp=ary[j];
            ary[j]=ary[j+1];
            ary[j+1]=temp;
            flag=true
          }
        }
        if (flag){
          flag=true
        }else{
          break
        }
      }
    //二、sort法
    ary.sort(function(a,b){ return a.i- b.i }) console.log(ary)
  • 相关阅读:
    Qt 任务调度器
    我又回来了,行情好转。
    设置IIS7文件上传的最大大小 maxAllowedContentLength,maxRequestLength
    ckfinder 1
    Oracle 数据库备份还原(Expdp/impdp)记录
    vs2015 去除 git 源代码 绑定
    java 核心技术之多线程篇
    java 核心技术之基础篇(三)
    java核心技术之基础篇(二)
    java 核心技术之基础篇(一)
  • 原文地址:https://www.cnblogs.com/liangfc/p/8711951.html
Copyright © 2011-2022 走看看