引用类型 ( 对象定义 )——Array 类型

本文地址:http://www.cnblogs.com/veinyin/p/7607293.html 

 

一个数组中可以存储不同类型的值,可以混合存储数字、字符串、对象等

 

1 创建数组

 

1.1 构造函数

1 var colors = new Array();       //自动长度
2 
3 var colors = new Array(20);     //长度为20

 

1.2 数组字面量

1 var colors = ["red","yellow","blue"];
2 
3 var colors = [];        //空数组

 

2 检测数组

if(Array.isArray(value)) statement

 

 

3 转换方法

 

3.1 toString()

alert(colors.toString());

 

 

3.2 toLocaleString()

 

3.3 valueOf()

alert(colors.valueOf());

 

3.4 join()

alert(colors.join("||"));       //用 || 分隔各数组项

 

 

4 栈方法

 

4.1 插入数据

colors.push("value");

 

4.2 弹出数据

var value = colors.pop();

 

 

5 队列方法

 

 

5.1 正向操作,数组后端添加,前端取出

 

5.1.1  插入数据

colors.push("value");

5.1.2 取出数据

var value = colors.shift();

 

 

5.2 反向操作,数组前端添加,后端取出

 

5.2.1 插入数据

colors.unshift("value");

5.2.2 取出数据

var value = pop();

 

6 重排序

6.1 数组项逆序排列

nums.reverse();

6.2 数组项升序排列

nums.sort();

sort() 函数可以接受一个比较函数作为参数,以便指定哪个值位于哪个值前面

 1 var num = [0,1,5,10,15];
 2     document.getElementById("index").innerHTML = num.sort().join("||");
 3     num.sort(compare);
 4     document.getElementById("index2").innerHTML = num.join("||");
 5 };
 6 function compare(num1,num2){
 7     if(num1 > num2) {
 8         return 1;
 9     }
10     else if(num1 < num2){
11         return -1;
12     }
13     else{
14         return 0;
15     }
16 }

第一个结果是 sort() 排序,先比较第一个字符,再比较第二个字符

第二个结果是使用了参数的结果,完全升序,将 return 的正负 1 交换,则实现完全降序

7 concat()

将参数添加到数组末端,可接受一个或多个参数

num.concat(12,34,45,23);

 

 

8 slice()

 

8.1 一个参数

slice(num);
//返回下标为 num 到数组末尾的所有数据项

 

8.2 两个参数

slice(num1,num2);
//返回下标为 num1 到 num2-1 的所有数据项

 

 

9 splice()

 

9.1 删除

nums.splice(0,2);
//删除下标为 0 开始的两个数据项

 

9.2 插入

num.splice(2,0,"12","34","45","23");
//插入位置,删除项数,插入内容

插入数据为下标 2 处开始,删除项若不为0,删除原数组中开始项后的数据项

 

 

9.3 替换

nums.splice(2,1,"22");

其实就是插入的变形

 

 

10 位置方法

 

10.1 indexOf()

1 nums.indexOf(3);
2 //在 nums 数组中从首端开始查询是否存在 3, 遇到第一个则返回其下标

 

10.2 lastIndexOf()

1 nums.lastIndexOf(3);
2 //在 nums 数组中从末端开始查询是否存在 3, 遇到第一个则返回其下标

 

 

11 迭代方法

func 接收 3 个参数: 数组项的值,该项在数组中的位置,数组对象本身

 

11.1 nums.every(func);

所有数组项的 func 值均为 true 才返回 true, 否则返回 false

11.2 nums.some(func);

有一个数组项的函数值为 true 则返回 true

11.3 nums.filter(func);

返回函数值为 true 的项组成的数组

11.4 nums.map(func);

返回函数返回的结果组成的数组

11.5 nums.forEach(func);

数组每一项均运行函数,但无返回值

12 缩小方法

两个方法均接受两个参数: 调用函数、作为缩小基础的初始值

两个方法区别, reduce() 正序遍历, reduceRight() 逆序遍历

  • reduce(func);

  • reduceRight(func);

func 接收 4 个参数: 前一个值、当前值、项的索引、数组对象 测试似乎用到了前两个参数

1 var sum = nums.reduce(function(prev,cur,index,array){
2     return prev + cur;
3 });

 

posted @ 2017-09-28 16:29  yuhui_yin  阅读(323)  评论(0编辑  收藏  举报