数组:
创建数组:
=====================1.数组直接量(字面量)形式创建数组=================
var arr=[ ];//空数组
var arr=[1,2,3,4 ];
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];//[1,undefined,3]
console.log(arr4[1]); //具体打印某个数组的元素就是undefined
console.log(arr4.length); //空的数组元素在中间,长度也算
var arr5=[,,];
document.write(arr5.length); //最后一个数组元素长度不算
===========================2.通过构造函数Array()创建数组=====================
这时,我们使用关键词new来创建数组对象
var a=new Array();//[] //创建数组,数组长度由内容决定
var a=new Array(5); //括号里的证书控制数组的数量
console.log(a.length);
var a=new Array(1,2,'king',false,2.3,null);//[1,2,'king',false,2.3,null]
console.log(a); //输出数组里的所有内容,用逗号隔开
var arr=[1,2,3,4];
console.log(arr[0]);//1
console.log(arr[3]);
arr[0]='king'; //改变数组元素原有的元素
console.log(arr);
arr[5]='hello nana'; //增加数组的元素,中间空下的则是,undefined
console.log(arr);
arr[arr[x]]=333; //改变数组之前的元素
console.log(arr);
var arr=new Array(10);
arr=[];
arr[100]='abc';
console.log(arr.length);
var arr=[1,2,3,4,5,6,7,8];
arr.length=3;
console.log(arr); //改变数组长度,使它的长度为3
arr.length=0;
console.log(arr); //改变长度,使它的长度为0
arr.length=5;
console.log(arr); //上面长度已经为0,所以现在里面则是空的 输出[empty × 5]
var arr=[1,2,3];
Object.defineProperty(arr,'length',{ //定义性质,使它的长度不能书写,禁止转换它的性质
writable:false
});
console.log(arr.length); //重新定义的长度则无效
arr.length=10;
console.log(arr.length);
var x=2;
console.log(arr[x]); //将X带进去,输出的则是数组第三个元素的内容
=====================对象==================
var obj={x:"2",y:"4"};
obj["u"]='a';
obj[1]='b';
console.log(obj); //输出{1: "b", x: "2", y: "4", u: "a"}
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", …]
console.log(arr.length); //是数组元素的0~4,总共长是5
=================================添加删除=========================
var arr=[];
arr[0]='a';
arr[1]='b';
arr.unshift(1,2,3,4,5); //开头添加
console.log(arr);
//arr.shift(); //开头删除
//console.log(arr);
arr.push('d','e','f',12,34); //尾部添加
//var res=arr.pop(); //尾部删除
//console.log(res); //输出删除的数组元素
console.log(arr);
var arr=['a','b','c','d'];
delete arr[0]; //delete删除 //被删除的数组元素是第一个,但是位置保留
console.log(arr); //输出为[empty, "b", "c", "d"] 第一个位置空
console.log(arr.length); //长度也还是4
============================for循环输出,for....in循环,forEach直接循环,.map循环===========================
var arr=['a','b','c','d','e'];
for(var i=0,len=arr.length;i<len;i++){ //声明变量len赋值arr.length(长度),让它循环
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){ //for...in声明来循环输出数组中的元素
console.log(arr1[i]) //输出结果为x y z
}
for(var i in arr1){
if(arr.hasOwnProperty(i)){ //如果他有自己的性质
console.log(arr1[i]); //结果输出为布尔类型:true
}
}
var arr2=[1,2,3,4,5,6];
arr2.forEach(function(x){ //用forEach直接循环数组的元素
console.log(x);
});
var arr=[1,2,3,4,5,6];
res=arr.map(function(x){ //用.map直接循环输出
return x*x;
});
function Test(element,index,array){ //element元素 index指标/索引 array数组
console.log('要处理的数组为:'+array); //输出的数组
console.log('索引:'+index+"--值为:"+element); //索引,相当于下标 element输出的元素
}
arr2.forEach(Test);
结果为:
要处理的数组为:1,2,3,4,5,6
索引:0--值为:1
要处理的数组为:1,2,3,4,5,6
索引:1--值为:2
要处理的数组为:1,2,3,4,5,6
索引:2--值为:3
要处理的数组为:1,2,3,4,5,6
索引:3--值为:4
要处理的数组为:1,2,3,4,5,6
索引:4--值为:5
要处理的数组为:1,2,3,4,5,6
索引:5--值为:6
===============================数组中的常用方法==========================
var arr=['a','b','c','d']; //输出结果为a,b,c,d默认逗号隔开
var res=arr.join(); //join 加入
res=arr.join(','); //可以用join('')里加内容来更改
res=arr.join('');
console.log(res);
res=arr.reverse(); //reverse反/倒 使输出的结果倒着输出
console.log(res); //输出结果为["d", "c", "b", "a"]
var arr=['a','b','c','A','B','C'];
arr.sort(); //.sort排序 字符串按ASCLL码排序
console.log(arr); //结果为["A", "B", "C", "a", "b", "c"]
var arr=[1,2,11,20,3,15];
arr.sort(); //.sort排序 数字排序 先看第一位的数值大小,然后看第二位
console.log(arr); //输出结果为[1, 11, 15, 2, 20, 3]
arr.sort(function(a,b){ //.sort排序 数字排序
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,age 内容和数组一样用逗号隔开
{name:'queen',age:32},
{name:'zhangsan',age:54},
{name:'rose',age:66},
];
users.sort(function(a,b){ //.sort排序 先看首字母,首字母相同看第二个字母
if(a.name>b.name)return 1;
if(a.name<b.name)return -1;
return 0;
});
console.log(users);
// 0: {name: "king", age: 12}
1: {name: "queen", age: 32}
2: {name: "rose", age: 66}
3: {name: "zhangsan", age: 54}
for(var i in users){ //只对name来排序
console.log(users[i]['name']); //也可以写成console.log(users[i].name); 直接找
} //输出结果为 king queen rose zhangsan
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
var arr=[1,2,3];
res=arr.concat(4,5,6); //arr连接还是原来的,不变
res=arr.concat([4,5,6]);
res=arr.concat([4,5,6],[7,8,9]);
res=arr.concat([11,[12,[33]]]);
console.log(res); //输出结果为[1, 2, 3, 11, Array(2)( [12,[33]] )]
var arr=['a','b','c','d','e','f','g','h']; //左到右是正数,右到左为负数
res=arr.slice(0,3); //slice 分割/截取 0 下标 3 到3不算3
res=arr.slice(2,-3);
res=arr.slice(4);
res=arr.slice(-5,-2);
console.log(res);
var arr=['a','b','c','d','e','f','g','h'];
res=arr.splice(0,1);//['a']; //splice删除元素 0 下标 1 到1 不包括1
res=arr.splice(5);
res=arr.splice(0,2,'!','?','%'); //删除a,b 并添加!,?,%元素,在最前
console.log(res);
console.log(arr);
function Trans(x){ //Trans进入/横穿
return x.replace(/!/g,'?').toUpperCase(); //replace替换 找到!全局标志 g,换成? 并且给它的字母换成大写
}
console.log(res);
var arr=[1,3,4,5,5,623,4,345,4367,null,undefined,false,true,''];
res=arr.filter(function(x){ //filter过滤 return 返回
return x<=10; //小于等于十过滤出来
});
res=arr.filter(function(x){
return x%2==0; //余数为0
});
res=arr.filter(function(x){ 不是undefined与null
return x!==undefined && x!=null;
});
console.log(res); //输出[1, 3, 4, 5, 5, 623, 4, 345, 4367, false, true, ""]
var arr=[1,2,3,4,5];
res=arr.reduce(function(a,b){ //reduce求和 数组里的元素相加
return a+b;
});
res=arr.reduce(function(a,b){
return a+b; //数组里的元素相加 再加上10
},10);
console.log(res);
var age=[12,34,55,66,28,19]; //输出结果为布尔类型
res=age.every(function(x){ //every每一个 每一个数组必须满足
return x>=18;
});
res=age.some(function(x){ //some一些 其中一个数组满足就行
return x>=19;
});
console.log(res); //输出结果为false true
var arr=['a','b','c','d','e','a','bv','a'];
res=arr.indexOf('a');//0 //indexOf 查找下标
res=arr.indexOf('A');//-1
res=arr.indexOf('a',2); //“a”,2 查找第几个元素
res=arr.lastIndexOf('a'); //lastIndexOf 查找最后一个下标
console.log(res); //7
console.log(Array.isArray(arr)); //判断它是不是一个数组 是一个数组 结果为布尔类型 true
console.log(Array.isArray([])); //是一个数组 结果为布尔类型 true
console.log(Array.isArray({})); //是一个对象 结果为布尔类型 false
var arr=['a','b','c','d','e','a','bv','a'];
console.log(arr.toString()); //把里面的数组元素连接成一个字符串,里面用逗号隔开,逗号不能更改
console.log(arr.join()); //把里面的数组元素连接成一个字符串,里面用逗号隔开,逗号可以更改