您的位置:首页 > Web前端 > JavaScript

javascript 数组

2015-06-17 16:57 645 查看
1.定义:
① var arr = [1,2,3];
② var arr = new Array(1,2,3);

2.属性:
length-->可对数组进行读、写
var arr =[1,2,3];
alert(arr.length); // 3
arr.length = 1 ; //此时数组里仅剩下一个值,其它值被清空

扩展:快速清空数组元素的方法:
① arr.length = 0;
② arr[]; //效率比上面的高点

3.方法:
① 添加:push()、unshift()
push():添加值到数组末尾,返回数组的最新长度
unshift():添加值到数组前端,返回数组的最新长度

② 删除:pop()、shift()
pop():删除数组最后面的值,返回被删除的那个值
shift():删除数组最前面的值,返回被删除的那个值

实例:

<script>
  var arr =[1,2,3,4,5,6];
  arr.unshift(arr.pop());    //把数组的最后一个值删除并插入到第一个位置
  alert(arr);                //6,1,2,3,4,5
</script>


  

<script>
  var arr =[1,2,3,4,5,6];
  arr.push(arr.shift());         //把数组的第一个值删除并插入到最后一个位置
  alert(arr); //2,3,4,5,6,1
</script>


③ 添加、删除、替换:splice()
splice():能对数组元素进行添加、删除、替换操作,返回值为被删除的那个值,如果没有删除操作,将无返回值。
实例:
  

<script>
  var arr = [1,2,3,4,5,6];
  arr.splice(0,2);         // 从第0位开始,删除两个值
  alert(arr);           // 3,4,5,6
  arr.splice(4,1,'lily');   //从第4位开始,添加1个值“lily”
  alert(arr);            //3,4,5,6,lily
  arr.splice(1,0,'jack');    //把4换成'jack'
  // alert(arr);          //3,jack,4,5,6,lily
</script>  


实例:数组去重

<script>
  var arr =[1,2,3,4,3,2,3,5,6];
  for(var i=0; i<arr.length; i++){
    for(var j=i+1; j<arr.length; j++){
      if(arr[i] == arr[j]){
        arr.splice(j,1);
        j--;
      }
    }
  }
  alert(arr);     // 1,2,3,4,5,6
</script>  


④ 排序:sort()
方式一:按照字符编码排序

<script>
  var arr = ['b','d','a','c'];
  arr.sort();
  alert(arr); //a,b,c,d
</script>  


方式二:借助比较函数去排序
实例:有序排序

<script>
  var arrWidth = ['10px','30px','222px','2px'];
  arrWidth.sort(function(a,b){
    return parseInt(a)-parseInt(b);
  });
  alert(arrWidth);      //2px,10px,30px,222px
</script>


实例:随机排序

<script>
  var arr = [1,2,3,4,5,6,7];
  arr.sort(function(a,b){
    return Math.random()-0.5;
  });
  alert(arr);       //2,3,1,5,6,4,7
</script>


扩展:随机函数Math.random();
Math.random()是0~1之间的随机函数
Math.round()是四舍五入取整的函数
Math.ceil()向上取整函数
0~1之间的随机整数:Math.round(Math.random());
0~10之间的随机整数:Math.round(Math.random()*10);
5~10之间的随机整数:Math.round(Math.random()*5+5);
10~20之间的随机整数:Math.round(Math.random()*10+10);
20~100之间的随机整数:Math.round(Math.random()*80+20);
由上:
x~y之间的随机整数:
  Math.round(Math.random()*(y-x))+x);
0~x之间的随机整数:
  Math.round(Math.random()*x);
1~x之间的随机整数:
  Math.ceil(Math.random()*x);

④ 连接数组:concat()

<script>
  var arr1 = [1,2,3];
  var arr2 = [4,5,6];
  var arr3 = [7,8,9];
  alert(arr1.concat(arr2,arr3));      //1,2,3,4,5,6,7,8,9
</script> 


⑤ 颠倒数组位置: reverse()  

<script>
  var arr1 = [1,2,3,4,5,6];
  arr1.reverse();
  alert(arr1);      //6,5,4,3,2,1
</script>


扩展:颠倒字符串位置
  var str = "abcdef";
  alert(str.split('').reverse().join(''));   //fedcba

⑥ join();

join() 方法用于把数组中的所有元素组合成一个字符串,元素根据指定分隔符进行分割,返回值是字符串。

<script>  
  var arr=['red','yellow','pink'];
  alert(arr.join("-"));   //red-yellow-pink
  alert(typeof arr.join());    //string
</script>   


⑦ 迭代方法:every()、filter()、forEach()、map()、some()

传入这些方法中的函数会接收三个参数:
  数组项的值
  该项在数组中的位置
  数组对象本身

第一种: every()、some() 用于查询数组中的项是否满足某个条件

every():传入的函数必须对每一项都返回ture,这个方法才会返回ture,否则返回false。    

<script>
var number = [1,2,3,4,5,6,7,8,9];
    var result = number.every(function(item,index,array){
      return (item > 2);
    });
    alert(result);     // false,因为传入的函数只有部分满足>2这个条件
</script>  


some():传入的函数中有一项返回ture,这个方法就返回ture。

<script>
  var number = [1,2,3,4,5,6,7,8,9];
  var result = number.some(function(item,index,array){
    return (item > 2);
  });
  alert(result);     // ture ,传入的函数只要有一项满足>2的条件即可
</script>


第二种: filter() 对传入的函数,筛选出符合条件的数组项 ,返回ture的项组成的数组

实例:返回一个所有的值大于2的数组。

<script>
  var number = [1,2,3,4,5,6,7,8,9];
  var result = number.filter(function(item,index,array){
    return (item>2);
  })
  alert(result);   // 3,4,5,6,7,8,9
</script>  


第三种:map() 对原数组的每一个对应项做相应操作后,返回其操作后的数组

例如:给数组中的每一项乘以2,然后返回这些乘积组成的数组

<script>
  var number = [1,2,3,4,5,6,7,8,9];
  var result = number.map(function(item,index,array){
    return item * 2;
  });
  alert(result);     // 2,4,6,8,10,12,14,16,18 结果会在原数组的基础上每项乘以2
</script>


第四种 :forEach() 对数组中的每一项运行传入的函数,无返回值,本质上与for循环迭代数组一样。

<script>
  var number = [1,2,3,4,5,6,7,8,9];
  number.forEach(function(){
    // 做点什么...
  });
</script>


参考资料:妙味课程视频、javascript高级程序设计
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: