数组练习

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)

 

posted @ 2018-04-03 23:57  追忆枉然  阅读(199)  评论(0编辑  收藏  举报