“万能”的数组

【前面的话】说数组“万能”,可能夸张了一点,但是就个人观点,数组的运用是非常广泛的,这里的广泛当然也包含了在其他语言中的运用。举例说明,在javascript当中,由于字符串的不可变性,在进行字符串拼接等操作中,都极大的消耗了内存,这时候用数组来“装载”字符串,操作简单,又不消耗过多的内存,真可谓是“香饽饽”。下面我总结了数组当中常用的一些操作。

——首先我们来对数组进行简单的介绍:

//   var o = { };
//   o.c     属性;
//   o["c"]   键-值 的集合; 字典
// 这两个的效果是一样的
  
var array = [6,7,5,84,6];
//所有对象,都具有toString和valueOf
console.log(array.toString());//toSTring内部就调用join()
console.log(array.valueOf());//返回当前数组对象

    1、 array.join();    // 将数组元素连接起来以构建一个字符串

1 // 将一个字符串数组输出为|分割的形式,比如“刘备|张飞|关羽”。使用两种方式实现
2  var array = ["刘备","张飞","关羽"];
3  console.log(array.join("|"));

    2、 array.reverse();    // 颠倒数组中元素的顺序

1 //    将一个字符串数组的元素的顺序进行反转。["a","b","c","d]——>["d","c","b","a"]
2       var array = ["a","b","c","d"];
3       array.reverse();
4       console.log(array);

 3、 array.filter();    // 使用指定的函数测试所有元素,并创建一个包含所有通过测试的元素的新数组    //这里涉及到兼容旧环境的问题

 1 var array = [1500,1200,2000,2100,1800];
 2        //会把筛选的结果返回一个新数组
 3  array = array.filter(function(element,index,thisObj){
 4        //element 数组中的每一个元素
 5        //index 索引
 6        //thisObj 当前数组对象
 7     if (element >= 2000) {
 8          return false;
 9     }
10     return true;
11  });
12     console.log(array);
4、 array.indexOf();
            array.lastIndexOf();
//    ["c","a","z","a","x","a"]找到数组中每一个a出现的位置,找不到返回-1
        //indexOf  获取数组中第一个符合条件元素的位置
        //lastIndexOf   获取数组中最后一个符合条件的元素的位置     
 
      var array = ["a","a","z","a","x","a"];
      console.log(array.indexOf("a",2));
      console.log(array.lastIndexOf("a"));
//
      var index = -1;
      do {
           index = array.indexOf("a", index+1);
           if (index != -1) {
           console.log(index);
          }
       }while(index != -1);

 5、 array.sort();

 1 //    ["c","a","z","a","x","a"]编写一个方法,求数组中每一个字符出现的次数
 2 //    排序
 3      var array = [3,6,1,5,10,2];
 4 //   array.sort();//如果不传参数,按默认的方式排序,按第一个字符的ascii码排序
 5 //   console.log(array);
 6  
 7 //如果 compareFunction(a, b) 小于 0 ,那么 a 会被排列到 b 之前;
 8 //如果 compareFunction(a, b) 等于 0 , a 和 b 的相对位置不变。备注: ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本);
 9 //如果 compareFunction(a, b) 大于 0 , b 会被排列到 a 之前。
10     array.sort(function(a,b) {
11         return a - b;
12     });
13     console.log(array);
14  
15 //调用自己模拟的sort
16 //sort(array, function(a,b) {
17 //    return -(a - b);
18 //});
19 //console.log(array);

6、 array.splice();  //插入、删除或替换数组的元素

var a = [1,2,3,4,5,6,7,8]
a.splice(4);        // 返回 [5,6,7,8]; a is [1,2,3,4]
a.splice(1,2);      // 返回 [2,3]; a is [1,4]
a.splice(1,1);      // Netscape/JavaScript 1.2 返回 4 ,应该返回 [4]
a.splice(1,0,2,3);  // Netscape/JavaScript 1.2 返回 undefined ,应该返回 []

7、 array.slice();  // 从当前数组截取一个新数组  

var a = [1,2,3,4,5];
a.slice(0,3);    // 返回 [1,2,3]
a.slice(3);      // 返回 [4,5]
a.slice(1,-1);   // 返回 [2,3,4]
a.slice(-3,-2);  // 返回 [3]; IE 4存在的Bug: 返回[1,2,3]
8、 array.forEach();   //遍历数组 
                                    //  注意与filter的区别
                                    //这里涉及到兼容旧环境
 1     var array = [4,6,7,8,3,46,8];
 2  
 3         //forEach  遍历数组
 4 //        array.filter(function (item,index,obj) {
 5 //        })
 6  
 7         for(var i = 0; i < array.length ; i++) {
 8             var item = array[i];
 9         }
10  
11         array.forEach(function (item, index,obj) {
12             console.log(item);
13             console.log(index);
14             console.log(obj);
15         })

【输出】

9、 html5提供的方法:
i)indexOf ;    lastIndexOf
ii)filter ;  forEach   

10、清空数组的三种方式:

var array = [1, 2, 3, 4];
//方式1
array.splice(0,array.length); //删除数组中所有项
//方式2
array.length = 0;  //length属性可以赋值,length是只读
//方式3
array = [];  // 推荐

 

posted on 2016-04-09 00:38  小花大方  阅读(1083)  评论(1编辑  收藏  举报