JavaScript之Array类型

特殊性

  • 数组的每一项可以保存任何类型的数据
  • 大小可以动态调整(即随着数据的添加而自动增长容量)
  • length属性非只读!
创建数组的基本方式
//Array构造函数
var colors = new Array();
colors = new Array(20);//初始化数组容量
colors = new Array('red','blue',4)//创建包含该三项值的数组

//数组字面量表示
colors = ['name',4,true];
利用length的非只读性、自动更新性
//移除项
var colors = ['red','green','purple'];
colors.length = 2;
console.log(colors[2])//undefined;

//添加新项
colors[colors.length] = 'black';
colors[colors.length] = 'white';
console.log(colors);//["red", "green", "black", "white"]
数组检测
//一般情况下可以使用instanceof(注意:不适用两个以上不同全局执行环境(页面包含多个框架))
console.log(['time','var'] instanceof Array);//true

//推荐:
if(Array.isArray(['time','var'])){
  console.log("I'm array!");
}
常用转换方法
var colors = ['red','green','white'];
console.log(colors.toString());//red,green,white
console.log(colors.join('-'));//red-green-white

模拟数据类型

模拟堆栈(LIFO---last in first out)
var container = [];
container.push('a','b');
console.log(container.pop());//b
console.log(container.pop());//a

应用:反向输出数组的值

var container = ['a','b'];
var copy = container.slice(0,container.length);
while(copy.length != 0){
  console.log(copy.pop());
}
模拟队列(FIFO---first in frist out)
var container = [];
container.push('a','b');
console.log(container.shift());//a
console.log(container.shift());//b

//应用:使用unshift往数组前端添加项
var numContainer = ['2','3'];
numContainer.unshift('1');//返回添加后数组长度
numContainer.unshift('0');
console.log(numContainer);//["0", "1", "2", "3"]

操作数组

拼接、拷贝数组
var container = ['time','money','reverse'];

//1. concat 基于当前数组项拼接新数组,不影响原数组
var copy_container = container.concat();//copy of array
var mix_container = container.concat('yea',['haha','liu'])//contact array

console.log(mix_container);//["time", "money", "reverse", "yea", "haha", "liu"]
console.log(copy_container);//["time", "money", "reverse"]

//2. slice  基于当前数组截取出新数组,不影响原数组
copy_container = container.slice(0);//copy of array
var slice_array = mix_container.slice(1,2);// slice of array

console.log(copy_container);//["time", "money", "reverse"]
console.log(slice_array);//["money"]

//3. splice 影响原数组,返回值为包含删除项的数组(若无,则为空数组),有三种用法:
container.splice(0,1);//删除第1项----删除
console.log(container);//["money", "reverse"]
container.splice(1,0,'lol');//把'lol'插入到位置1----插入
console.log(container);//["money", "lol", "reverse"]
container.splice(1,2,'tt','hhh');//删除位置1,然后从位置1插入两下----替换
console.log(container);//["money", "tt", "hhh"]

排序数组

reverse()

var values = [1,2,3,4,5];
console.log(values.reverse());//[5, 4, 3, 2, 1]

sort()

sort默认情况下,按升序排列数组项,小值位于最前面,大值位于最后面,注意:sort会调用每项的toString转型方法,比较的是字符串,就算是数值,比较的也是字符串!!

var values = [0,1,5,10,15];
values.sort();
console.log(values);//[0, 1, 10, 15, 5]

自定义排序方法

var values = [0,1,5,10,15]
function orderByAsc(val1,val2){
  return val1 - val2;
}
values.sort(orderByAsc);
console.log(values);//[0, 1, 5, 10, 15]

位置方法

lastIndexOf indexOf (注意:要求查找的项必须满足严格等于!)

var appleDevs = ['mac','ipad','iphone','ipad'];
console.log(appleDevs.lastIndexOf('ipad'));//3
console.log(appleDevs.lastIndexOf('ipad',3));//3
console.log(appleDevs.indexOf('ipad'));//1
console.log(appleDevs.indexOf('ipad',0));//1

迭代方法

自定义迭代回调函数:callBack(item,index,array)

校样数组项

  • every(callBack):每项执行callBack,若每项都返回true,则返回true
  • some(callBack):每项执行callBack,若某项返回true,则返回true

过滤数组项

  • filter(callBack):每项执行callBack,返回满足callBack返回true的项组成的数组

遍历数组项

  • forEach(callBack):每项执行callBack,无返回值

构造数组每项结果集

  • map(callBack):每项执行callBack,返回每项执行callBack返回值组成的数组

注意以上迭代方法,都不会修改数组项的值!

转载于:https://www.cnblogs.com/ZHeGeS/p/JavaScript-zhiArray-lei-xing.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值