你的位置:首页 > Java教程

[Java教程]“万能”的数组


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

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

//  var o = { };//  o.c   属性;//  o["c"]  键-值 的集合; 字典// 这两个的效果是一样的 var array = [6,7,5,84,6];//所有对象,都具有toString和valueOfconsole.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 //调用自己模拟的sort16 //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];//方式1array.splice(0,array.length); //删除数组中所有项//方式2array.length = 0; //length属性可以赋值,length是只读//方式3array = []; // 推荐