ECMAScript引用类型之Array类型

23 篇文章 0 订阅
22 篇文章 0 订阅

Javascript引用类型-Array

创建Array数组

var colors = new Array(); //注意大小写

var colors = new Array(20); //创建长度20的数组

var colors = new Array("red","blue","green");//创建包含3个字符串的数组

var colors = new Array('3'); //包含要给字符的数组(注意和第二项的区别)

var colors = ["red","blue","3"]; 

var colors = []; //空数组

//最好不要这样创建
var colors = [1,2,]; //2或3项的数组(根据浏览器决定)
var colros = [,,,,,] //5或6项的数组

检测是否为数组

//方法一
if(value instanceof Array){}
//方法二
Array.isArray(value);
两者区别

方法一在多个不同的全局执行环境中会出问题。

数组转换方法

var colors = ["red","blue","green"];
alert(colors.toString());  //输出:red,blue,green
alert(colors.valueOf());   //输出:red,blue,green
alert(colors);             //输出:red,blue,green

栈方法

  • 栈特点:LIFO(先进后出)
  • 入栈:push()
  • 出栈:pop()
var colors = new Array();
var count = colors.push("red","blue");
alert(count); //2

var item = colors.pop();
alert(item); //blue
alert(colors.length) //1

队方法

  • 队特点:FIFO(先进先出)
  • 入队:unshift()
  • 出队:shift()
var colors = new Array("red","blue","green");
var item = colors.shift();
alert(item); //red
alert(colors.length); //2

重排序方法

  • reverse()反转数组
  • sort(function)排序数组,如果不给function参数,则会调用默认的toString()方法,然后根据ASCLL比较大小
function compare(value1,value2){
    if(value1 > value2){
        return -1;  //负数表示第一个参数位于第二参数之前
    }else if(value1 < value2){
        return 1;   //负数表示第一个参数位于第二参数之后
    }else{
        return 0;   //相等就用0表示
    }   
}

var values = [1,2,3,4];
values.sort(compare);
alert(values);  //4,3,2,1

操作方法

深度复制一个数组(创建数组的副本)
var colors = new Array("red","blue","green");

var colors2 = colors.concat("yellow",["1","2"]);
alert(colors); //red,blue,green
alert(colors2);//red,blue,green,yellow,1,2
slice()截取数组
var colors = ["red","blue","green","yellow","purple"];
var colors2 = colors.slice(1);
var colors3 = colors.slice(1,4);
alert(colors2); //blue,green,yellow,purple
alert(colors3); //blue,green,yellow"
splice()增删查改数组
  • 删除
    splice(0,2) 删除数组前两项
  • 插入
    splice(2,0,”red”,”green”) 从当前数组的位置2开始插入字符串
  • 替换
    splice(2,1,”red”,”green”) 删除位置2的项,然后开始插入字符串

位置方法

  • indexOf()
  • lastIndexOf();

迭代方法

every()方法和some()方法
var numbers = [1,2,3,4,5,4,3,2,1];
var everyResult = numbers.every(function(item,index,array){
    return (item > 2);
}); //是否全部大于2,是就放回true,否则false
alert(everyResult) //false

var someResult = numbers.some(function(item,index,array){
    return (item > 2);
}); //是存在大于2的数,是就放回true,否则false
alert(someResult) //true
filter()方法
var numbers = [1,2,3,4,5,4,3,2,1];
var filterResult = numbers.filter(function(item,index,array){
    return (item > 2);
}); //大于2,就放回item
alert(filterResult) //[3,4,5,4,3]
map()方法
var numbers = [1,2,3,4];
var mapResult = numbers.map(function(item,index,array){
    return (item * 2);
}); //每一项都放回item*2
alert(mapResult) //[2,4,6,8]
forEach()方法
var numbers = [1,2,3,4,5,4,3,2,1];
numbers.forEach(function(item,index,array){
    //执行某些操作
})

归并方法

reduce()从第一项开始
var values = [1,2,3,4,5];
var sum = values.reduce(function(prev,cur,index,array){
    return prev+cur;
});
alert(sum); //15
  • 说明:
    prev 表示前一个值(也就是上次执行的返回值prev+cur)
    cur 表示当前值(可选,也就是该索引下数组的值)
    index 项的索引
    array 数组对象
reduceRight()从最后一项开始
//代码略
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值