Array
Array
引用类型
和object一样,数组赋值给变量,引用的同一个数组,数值是同步的。
var a=[1,2,3,4,5];
var b=a;
b[0]=9;
console.log(a);//[9,2,3,4,5]
var a={id:1};
var b=a;
b.id=3;
console.log(a);//{id:3}
数组的每一项可以保存任意数值,允许不同数据类型。
var p=new Array(1,'123',{})
console.log(p);
new Array()创建数组 ,如果参数是一个数字代表数组大小。 不会填充初始值,默认undefined
[ ] 创建数组,参数就是数组的值,如果只包含一个数字x,代表数组里只有一个数字x
var p=new Array(20)
var f=[30]
console.log(p[2]);//undefined
console.log(p);//[<20 empty items>]
console.log(f);//[30]
length数组长度
长度取决于最大赋值下标+1
var a=[]
console.log(a.length);//0
a[5]=3
console.log(a.length);//6
console.log(a[4]);//undefined 未赋值的0-5都是undefined
修改长度会清除长度外的元素
var a=[1,2,3,4,5]
a.length=2
console.log(a);//[ 1, 2 ]
length 方便在末尾添加元素
var a=[1,2,3,4,5]
a[a.length]=6
a[a.length]=7
console.log(a);//[1,2,3,4,5,6,7]
检测/判断数组 107
var a=[]
if(a instanceof Array){
console.log('yes');//yes
}
concat合并创建新数组
concat不会修改原数组,而是产生一个新数组
var a=[1,2]
var b=[3,4]
var c=[5,6]
var d=a.concat(b,c)
console.log(d);
slice() 方法
Array
实现数组拷贝产生一个新数组 (数值不同步影响) 参数是个区间
var a=[0,1,2,3,4,5]
//无参数,取全部
console.log(a.slice());//[ 0, 1, 2, 3, 4, 5 ]
//一个参数,作为起点,默认取到终点
console.log(a.slice(1));//[ 1, 2, 3, 4, 5 ]
console.log(a.slice(-3));//[ 3, 4, 5 ]
//两个参数时,前闭后开
console.log(a.slice(2,5));//[2,3,4]
console.log(a.slice(-5,-2));//[1,2,3]
splice() 方法
在原数组上进行处理
删除
Array
var a=[0,1,2,3,4,5]
var res=a.splice(2,2) //从2开始删除两项
console.log(res);//[2,3] 被删除的部分
console.log(a);//[0,1, 4, 5 ]
res=a.splice(2,0,9,9,9)//从2开始删除0项,加入9,9,9
console.log(res);//[]
console.log(a);//[0,1,9,9,9,4,5]
res=a.splice(2,3,9,9,9)//从2开始删除3项,加入9,9,9
console.log(res);
console.log(a);
添加(删除0项)
从start上开始添加 而不是从start+1开始
var a=[0,1,2,3,4,5]
var res=a.splice(2,0,9,9,9)//从2开始删除0项,加入9,9,9
console.log(res);//[] 被删除的部分
console.log(a);//[0,1,9,9,9,2,3,4,5]
替换 (删除数量=加入数量)
var a=[0,1,2,3,4,5]
res=a.splice(2,3,9,9,9)//从2开始删除3项,加入9,9,9
console.log(res);//[ 2, 3, 4 ] 被删除内容
console.log(a);//[ 0, 1, 9, 9, 9, 5 ]
迭代方法
foreach()
var a=[1,2,3,4,5];
a.forEach(function(item,index,arr){ //没有返回值
console.log(item);
})
//输出1\n2\n3\n4\n5 遍历
every()
var a=[0,1,2,3,4,5]
var res=a.every(function(item,index,arr){//可以省略index和arr
return item>2
})
console.log(res);//false 并不是每一个都大于2
some()
var a=[0,1,2,3,4,5]
var res=a.some(function(item,index,arr){//可以省略index和arr
return item>2
})
console.log(res);//true 存在一些大于2
filter()
var a=[1,2,3,4,5]
var res=a.filter(function(item,index,arr){
return item>2
})
console.log(res);//[3,4,5] 过滤器 查找大于2 的部分
map()
var a=[1,2,3,4,5]
var res=a.map(function(item,index,arr){
return item*2
})
console.log(res);//[ 2, 4, 6, 8, 10 ] 批量处理 每一项都乘2
正则匹配
test() 判断是否能匹配到
re=/cat/g;
var res=re.test('catastrophec');
console.log(res2);

浙公网安备 33010602011771号