字面量创建数组
var arr=[ ];//空数组
var arr1=[1,2,3,4,5 ];
var arr2=[1,2.3,true,false,null,undefined,[1,2,3],{x:1,y:2}];// 大括号表示对象 中括号表示数组
var x=1;
var arr3=[x,x*3,x+2,x+3];
console.log(arr3); //[1,3,3,4]
var arr4=[1,,3];
console.log(arr4);//[1,empty,3] 整体打印显示空
var arr4=[1,,3];
console.log(arr4[1]);//[undefined] 单独打印为undefined
console.log(arr4.length); 长度为3
var arr5=[,,];
console.log(arr5.length);长度为2
通过构造函数Array()创建数组
var a=new Array(); 创建空的数组
var a=new Array(5);
console.log(a.length); 长度为5 括号里是表示数组的元素有几个
var a=new Array(1,2,'king',false,2.3,null);
console.log(a);//[1,2,'king',false,2.3,null] 数组 里面能放数字 字符串 对象
var arr=[1,2,3,4];
console.log(arr[0]);//1
console.log(arr[3]);//4 取数组中的某一个元素
arr[0]='king';
console.log(arr); 将数组中第0个位置的元素替换成king 结果[king,2,3,4]
arr[5]='hello nana';
console.log(arr); [king,2,3,4,,hello nana]
var x=2;
console.log(arr[x]); 取数组中第二个元素 3
arr[arr[x]]=333;
console.log(arr); [king,2,3,333,,hello nana]
var obj={x:"2",y:"4"};
obj["u"]='a';
obj[1]='b';
console.log(obj); 先打印下标
console.log(obj.length); //对象没有length属性
var arr=[];
arr[0]='a';
arr[1]='b';
arr[-123]='c';
arr[2.3]='d';
arr[null]='e';
arr[false]='f';
arr[undefined]='g';
arr['name']='h';
arr[4]="pp";
console.log(arr); [ "a", "b", 4: "pp", -123: "c", 2.3: "d", null: "e", false: "f", undefined: "g",name:"h"]
console.log(arr.length); 5 4+1
var arr=new Array(10);
arr=[];
arr[100]='abc';
console.log(arr.length); 101 100+1
var arr=[1,2,3,4,5,6,7,8];
arr.length=3; 定义长度为3
console.log(arr); [1,2,3]
arr.length=0; 定义长度为0
console.log(arr); [] 变成空数组
arr.length=5; 又定义长度为5
console.log(arr); 此时打印是[空*5]
var arr=[1,2,3];
Object.defineProperty(arr,'length',{ 定义数组的长度 writab:false为 不可写
writable:false
});
console.log(arr.length); 长度是3
arr.length=10;
console.log(arr.length); 长度还是3 定义了长度不可写 所以还是3
方法
1 arr.shift()开头删除
2 arr.unshift()开头添加
3 arr.push()尾部添加
4 arr.pop()尾部删除
5 delete arr[0]删除下标为0的元素 位置保留
var arr=[];
arr[0]='a';
arr[1]='b';
arr.shift(); //开头删除
arr.push('d','e','f',12,34); //尾部添加
console.log(arr); ['b','d','e','f'12,34]
var res=arr.pop(); //尾部删除
console.log(res);34
console.log(arr); ['b','d','e','f'12,]
arr.unshift(1,2,3,4,5); //开头添加
console.log(arr); [1,2,3,4,5,'b','d','e','f'12,]
var arr=['a','b','c','d'];
delete arr[0]; //位置保留
console.log(arr);
console.log(arr.length);[空,'b','c','d'] 用delete删除第0个位置 但位置保留只删除元素
6 arr.join()将数组内元素组合成一个字符串
var arr=['a','b','c','d'];
var res=arr.join(); [a,b,c,d]
res=arr.join('');[abcd]
//res=arr.join('...');[a...b...c...d]
console.log(res);
7 arr.reverse()将数组元素反过来输出
res=arr.reverse();['d','c','b','a']
console.log(res);
8 arr.sort()将数组元素按照ASCII码排序
var arr=['a','b','c','A','B','C'];
arr.sort();
console.log(arr); ['A','B','C','a','b','c']
var arr=[1,2,11,20,3,15];
arr.sort();
console.log(arr); [1, 11, 15, 2, 20, 3]
让数组中的数字从小到大 从大到小排序
arr.sort(function(a,b){
return a-b;
});
console.log(arr); [1, 2, 3, 11, 15, 20]
arr.sort(function(a,b){
return b-a;
});
console.log(arr); [20, 15, 11, 3, 2, 1]
var users=[
{name:'king',age:12},
{name:'queen',age:32},
{name:'zhangsan',age:54},
{name:'rose',age:66},
];
users.sort(function(a,b){
if(a.name>b.name)return 1;
if(a.name<b.name)return -1;
return 0;
});
console.log(users); 按字母的排序从小到大
for(var i in users){
console.log(users[i]['name']); king queen rose zhangsan
}
9 arr.concat()组合数组 用来连接两个或者多个数组 该方法不会改变现有的数组。而仅仅会返回被连接数组的一个副本
10 arr.slice()截取
var arr=['a','b','c','d','e','f','g','h'];
res=arr.slice(0,3); 输出是a,b,c 截取的是从下下标为0开始到下标为3之间的元素 但是不包括下标是3的元素
res=arr.slice(2,-3);输出是c,d,e 截取的是从下标为2开始到从后数第三之间的元素,不包括下标为-3的元素
res=arr.slice(4);输出结果是e,f,g,h 截取的是下标为4的元素到元素结束
11 arr.splice(index,howmany,item1,item2........itemx)
index:必需。整数,规定添加/删除项目的位置,使用负数从数组结尾数起
howmany:必需。要删除的项目数量,如果没有设置为0,则不会删除
item2........itemx:向数组增加新数组。
var arr=['a','b','c','d','e','f','g','h'];
aes=arr.splice(0,1) aes删除的元素是 a (也就是从下标0元素开始到下标1元素删除 不包括下标为1的元素) arr剩下的是b,c,d,e,f,g,h
aes=arr.splice(5) aes删除的元素是f,g,h(也就是从下标5元素开始到结束) arr剩下的是a,b,c,d,e
aes=arr.splice(0,2,‘!’,‘?’,‘%’) 从下标0元素开始删除2个 在向数组添加! ? % 结果是‘!’,‘?’,‘%’','c','d','e','f','g','h'
12 .map()
var arr=【1,2,3,4,5】;
res=arr.map(function(x){
return x*x;
})
console.log(res);结果是1,4,9,16,25 数组平方
var arr=['a!','b!','c','d!','e'];
res=arr.map(text); 调用函数
function text(x){
return x.replace(/!/g,'?').toUpperCase(); replace替换 将!替换成? toUpperCase转换成大写 g全部
}
console。log(res); ‘A?’ ,‘B?’ , ‘C’ ,‘D? ,‘E’
13 筛选过滤filter
console.log(res);
var arr=[1,3,4,5,5,623,4,345,4367,null,undefined,false,true,''];
res=arr.filter(function(x){
return x<=10;
});
res=arr.filter(function(x){
return x%2==0;
});
res=arr.filter(function(x){
return x!==undefined && x!=null;
});
console.log(res);
every所有的元素判断 some一些元素部分元素
var age=[12,34,55,66,28,19];
res=age.every(function(x){
return x>=18; 结果 false
});
res=age.some(function(x){
return x>=19; 结果 true
});
console.log(res);
14 求和 reduce
var arr=[1,2,3,4,5];
res=arr.reduce(function(a,b){
return a+b;
});
res=arr.reduce(function(a,b){
return a+b;
},10); ,10如果有逗号10的话最后结果在加10
console.log(res);
15 indexOf 找下标 如果有这个元素则找出下标是多少 如果没有这个元素那输出结果是-1
var arr=['a','b','c','d','e','a','bv','a'];
res=arr.indexOf(‘a’); 结果是0
res=arr.indexOf(‘b’); 结果是1
res=arr.indexOf(‘A’); 结果是-1
res=arr.indexOf(‘a’,2); 结果是5 这个找的是第二个a元素的下标
res=arr.lastindexOf(‘a’); 结果是7 这个找的是最后一个a元素的下标
--------------------------
for in forEach循环
var arr=['a','b','c','d','e'];
for(var i=0,len=arr.length;i<len;i++){
console.log(arr[i]); //['a','b','c','d','e']
}
var arr1=[];
arr1[12]='x';
arr1[23]='y';
arr1[55]='z';
for(var i in arr1){
console.log(arr1[i]); 通过for in 来打印数组
}
var arr2=[1,2,3,4,5,6];
arr2.forEach(function(x){
console.log(x);
});
function Test(element,index,array){
console.log('要处理的数组为:'+array);
console.log('索引:'+index+"--值为:"+element);
}
arr2.forEach(Test); 通过forEach循环来打印