javascript数组

一、javascript数组基础

① JS中的length方法,JS中的数组,类似于java中Map容器,长度可以改变,类型可以是任意的。

var arr = [1,2,true,new Date()];
alert(arr.length);   //4
/**
 * JS中的数组,类似于java中Map容器,长度可以改变,类型可以是任意的。
 * @type {number}
 */
arr.length = 10;
alert(arr.length);
alert(arr); //调用了toString方法

② push方法,push 方法,向数组中追加元素,返回值为当前数组元素的长度

var arr2 = [];
 arr2.push(1);
 var result = arr2.push(true,false);
 alert(arr2);
 alert(result); //3,新数组的元素个数

③ pop方法,从元素的尾部移除一个元素

var obj = arr2.pop();
alert(arr2);
alert(obj); //返回值为移除的元素

④ shift()从数组的头部移除一个元素,所谓的弹栈

var arr3 = [1,2,3,4];
var result = arr3.shift(); //从头部移除一个元素
alert(arr3);
alert(result); //返回值是移除的元素

⑤ unshift(parm),从数组的头部加入元素,所谓的压栈

var result2 = arr3.unshift(true,false);
alert(result2); //从数组的头部增元素
alert(arr3); //返回新数组的长度

⑥ JS的splice方法,操作原数组,按照指定的方式分割

var arr4 = [1,2,3,4,5];
/**
 * 第一个参数表示起始位置
 * 第二个参数表示要截取的个数
 * 第三个参数以及之后的参数表示追加的元素,从截取掉的位置开始追加
 * @type {Array.<number>}
 */
var splice_resulet = arr4.splice(1,2,0,4,5);//参数很灵活
alert(arr4);  //1,3,4,5,4,5
alert(splice_resulet); //2,3

下面一一举例:

//①一个参数的情况
 var arr = [1,2,3,4,5,6];
 var result1 = arr.splice(2); //表示从第二个位置开始切割,也就是3的位置
 alert(arr); //1,2
 alert(result1); //3,4,5,6

 //②两个参数的情况
 var arr2 = [1,2,3,4,5,6];
 var result2 = arr2.splice(3,5); //全闭区间
 alert(arr2); //1,2,3
 alert(result2); //4,5,6

 //③多个参数的情况
 var arr3 = [1,2,3,4,5,6];
 var result3 = arr3.splice(2,3,new Date(),'hello'); //用从第三个参数之后的所有数据填充被截取后的位置
 alert(arr3); //1,2,Tue Sep 12 2017 20:46:17 GMT+0800 (中国标准时间),hello,6
 alert(result3); //3,4,5

⑦ slice方法,左闭右开,原来的数组并不会变,也就是不操作数组本身,splice要操作数组本身

var arr5 = [1,2,3,4,5];
var slice_result = arr5.slice(2,4); //左闭右开,原来的数组并不会变,也就是不操作数组本身,splice要操作数组本身
alert(arr5);
alert(slice_result); //返回截取的内容

⑧ concat方法,将两个数组合并为一个数组

var arr6 = [1,2,3,4,5,6];
 var arr7 = [1,2,3];
 alert(arr6.concat(arr7)); //将两个数组合并成一个新的数组,不操作数组本身
 alert(arr6);
 alert(arr7);

⑨ join方法,在数值之间加入指定的字符

var arr6 = [1,2,3]
var resutl_join = arr6.join("|");
alert(resutl_join); //在元素之间添加内容,也不操作数组本身
alert(arr6); // 1|2|3

⑩ compare方法,对数组排序

var arr8 = [10,3,2,5,9,0];
var a1 = arr8.sort();
alert(a1);
alert(arr8);//数组排序,要操作数组,返回排序后的数组  0,10,2,3,5,9
//特别注意,排序的时候是一位一位的比较,大的就大,比如:2和10比较,由于2比1大,所以排序的结果是10,2
//那么该怎么去比较排序呢?

如果要按照自己的方式比较,那么需要自己定义一个排序的规则:

var arr = [3,2,10,30,9];
function mysort(value1,value2){
    if(value1 > value2){
        return 1;
    }else if(value1 < value2){
        return -1;
    }else {
        return 0;
    }
}
alert(arr.sort(mysort)); //2,3,9,10,30

11 reverse,将数组倒叙

var arr10 = [1,2,90];
alert(arr10.reverse()); //90,2,1

二、ECMA5数组新特性

① indexof方法,返回数据的索引位置

var arr = [1,2,3,4,5];
//① indexof方法,返回数据的索引位置
alert(arr.indexOf(3)); // 4

② lastIndexOf方法,从倒数位置开始,返回数据所在的索引位置

② lastIndexOf方法,从倒数位置开始,返回数据所在的索引位置
alert(arr.lastIndexOf(5)); //4

③ every ,对数中的每个数据进行指定的判断,全部为true则返回true

var result = arr.every(function (item,index,arr) {
    return item > 3;
});
alert(result); //false,因为不是所有的数据都大于3

④ some,与every相反,every相当于是&& some是取||

var result = arr.some(function(item,index,arr) {
    return item > 3;
});
alert(result); //true ,因为有数字大于3

⑤ filter,可以按照自己指定的过滤

var result = arr.filter(function(item,index,arr) {
    return item > 3;
});
alert(result);

⑥ forEach,就是一个简单的遍历

var result = arr.forEach(function(item,index,arr) {
    alert(item);
});

⑦ map,方法,可以按照指定的方式对每一个数据进行运算,然后返回新的数组

var result = arr.map(function(item,index,arr){
    return item*2;
});
alert(result); //2,4,6,8,10

⑧ reduce ,可以获取当前索引的前一个和当前一个

var result = arr.reduce(function (prev, cru, index, p4) {
    return prev + cru;
});
alert(result); //15

⑨ reduceRight和reduce差不多,只不过这个是从右边开始遍历

var result = arr.reduceRight(function (prev, cru, index, p4) {
    console.log(prev);
    console.log(cru);
    return prev + cru; //prev只的是当前元素的后面一个
});
alert(result); //15
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值