JavaScript学习笔记5--数组

来源:互联网 发布:沙宝亮 知乎 编辑:程序博客网 时间:2024/06/10 20:28

1.      创建数组

数组直接量中的值不一定要是常量,可以是任意表达式;

varbase = 1024;
  var
table = [base,base+1,base+2];

它可以包含对象直接量或其他数组直接量

var b = [[1,{x:1,y:2}],[2,{x:3,y:4}]];

如果省略数组中直接量的某个值,为undefined

var undefs = [,,];//数组有2个元素,数组直接量允许有可选的结尾逗号

2.      数组元素的读和写

注意,可以使用负数或非整数来索引数组。数值转换为字符串,字符串作为属性名来用。

如果使用了是非负整数的字符串,它就当做数组索引,而非对象属性。

a[-1.23] = true;//创建一个名为“-1.23”的属性a["1000"] = 0;//数组的第1001个元素a[1.000] //a[1]相等

3.      数组的长度

每个数组有一个length属性

特殊行为:设置length属性为一个小于当前长度的非负整数n时,当前数组中的那些索引值大于或等于n的元素将被删除:

a = [1,2,3,4,5];a.length = 3;//现在为a[1,2,3]a.length = 0;//删除所有元素,为a[]a.length = 5;//没有元素,长度为5,像new Array(5)

4.      数组元素的添加和删除

1)直接赋值

2)使用push()方法,在末尾添加一个或多个元素

a = [];a.push("one");//现在为a["one"]

3)delete删除数组元素:

a = [1,2,3,4,5];delete a[1];//a在索引1的位置不再有元素

数组有pop()方法,一次是减少长度1并返回被删除元素的值;

shift()方法,从数组头部删除一个元素。

splice()是一个通用的方法来插入、删除或替换数组元素。

5.      数组方法

1)  join()方法

将数组中所有元素都转化为字符串并连接在一起

var a = [1,2,3];a.join();//"1,2,3"a.join(" ");//"1 2 3"a.join("");//"123"var b = new Arrray(10);//b.join('-');//'---------'

 

2)  reverse()方法

将数组中的元素颠倒顺序,返回逆序的数组。

var a = [1,2,3];a.reverse().join();//"3,2,1",并且现在的a[3,2,1]

3)  sort()方法

数组中的元素排序并返回排序后的数组。

var a = new Array("banana","apple","cherry")a.sort();var s = a.join(",");//s="apple","banana","cherry"

对一个数组执行不区分大小写的字幕排序

var a = new Array("ant","Bug","cat","Dog")a.sort();//"Bug","Dog","ant","cat" a.sort(function(s,t){    var a = s.toLowerCase();    var b = t.toLowerCase();    if (a < b) return -1;    if(a > b)  return 1;    return 0;});//=>"ant","Bug","cat","Dog"

4)  forEach() 方法

遍历数组,为每个元素调用指定的函数

var data = [1,2,3,4,5];var sum = 0;data.forEach(function(value){    sum += value});data.forEach(function(v,i,a){    a[i] = v + 1;});

forEach()无法在所有元素都传递给调用个函数之前终止遍历。不能使用break语句。

5)  map()方法

调用的数组的每个元素传递给指定的函数,返回一个数组,包含函数返回值。

   var data = [1,2,3,4,5];   var b = data.map(function(x){      return x*x;   });alert(b);

6)  filter()方法

返回的数组元素是调用的数组的一个子集。传递的函数是用来逻辑判定的:true or false.

   var data = [1,2,3,4,5];   var small = data.filter(function(x){      return x<3;   });//2,1    var other = data.filter(function(x){        return x%2!=0;    });//5,3,1alert(small);    alert(other);

7)every() 和some()方法

返回true或false。

every() 针对所有,some()象数学中的“存在”.

var data = [1,2,3,4,5];alert(data.every(function(x){return x<10;}));//truealert(data.some(function(x){return x%2==0;}));//true

 

8)reduce() 和reduceRight()方法

使用指定的函数将数组元素进行组合,生成单个值。

var data = [1,2,3,4,5];var sum = data.reduce(function(x,y){return x+y;},0);//数组求和,第二个函数是一个传递给函数的初始值var product = data.reduce(function(x,y){return x*y;},1);//数组求积var max = data.reduce(function(x,y){return (x>y)?x:y;});//数组最大值alert(sum+","+product+","+max);//true

reduceRight() 按照数组索引从高到低(从右到左);

       9)indexOf() 和 lastIndexOf()方法

       搜索整个数组中具有给定值的元素,返回找到的第一个元素的索引或如果没找到返回-1

  indexOf()从头至尾,lastIndexOf()反向搜索。

var data = [1,2,3,1,5];var s = data.indexOf(1);//0var p = data.lastIndexOf(1);//3var m = data.indexOf(6);//-1alert(s+","+p+","+m);

可以使用charAt(i)访问单个字符。

0 0