初始化
Array构造函数
在定义之后进行赋值
var str=new Array();
str[0]="hello";
str[2]="world";
console.log(str);
console.log(str.length);
在定义的同时进行赋值
var str=new Array(100,true,{name:'zs'});
var str=new Array(10);
console.log(str);
var str=new Array(10.1);
数组字面量
var logo=['zs','ls','zl'];
var arr=[100,true,200.2,'lankou',{name:'zs'}];
console.log(logo,arr);
console.log(logo[0],logo[1],logo[2]);
console.log(logo[200.2],logo['abc'],logo[-1]);
length属性
var arr=[100,200,300,400];
console.log(arr.length);
arr.length=6;
console.log(arr.length,arr);
arr.length=3;
console.log(arr.length,arr);
线性结构实现尾部新增
var arr=[10,20,30,40];
arr[arr.length]=50;
arr[arr.length]=60;
console.log(arr,arr.length);
尾部新增元素举例
var arr=[10,20];
function myAdd(){
for(var key in arguments){
var value=arguments[key];
this[this.length]=value;
}
}
myAdd.call(arr,30,40,50);
console.log(arr);
访问数组元素
数组变量名[索引]
如果索引小于数组的长度,返回对应项的值
var logo=['zs','ls','zl'];
console.log(logo[0],logo[1],logo[2]);
如果索引大于数组的长度,数组自动增加到该索引值加1的长度
var logo=['zs','ls','zl'];
logo[0]="小猪";
logo[3]="小白";
console.log(logo);
数组的遍历
var strs=new Array();
strs[0]='你好';
strs[1]="中国";
strs[3]="!";
for(var i=0;i<strs.length;i++){
var item=strs[i];
console.log(i,item);
}
for(var i in strs){
console.log(i,strs[i]);
}
var i=0;
while(i<strs.length){
console.log(i,strs[i]);
i++;
}
var i=0;
do{
console.log(i,strs[i]);
i++;
}while(i<strs.length);
数组检测
Array.isArray()
var arr=[];
console.log(Array.isArray(arr));
数组序列化
toString()
var arr=[100,200,{name:'ls'}];
console.log(arr.toString());
console.log(['hello','world'].toString());
join();
var arr=[100,200,[1,2,3]];
var str=arr.join('|');
console.log(str);
JSON
JSON.stringify()
序列化 该方法用于将 JavaScript 值转换为 JSON 字符串
var arr=[100,200,{name:'ls'},function(){},[1,2,3]];
var str=JSON.stringify(arr);
console.log(str);
JSON.parse()
反序列化 该方法用于将一个 JSON 字符串转换为对象
var str="[100,200,300]";
var r=JSON.parse(str);
console.log(r);
console.log(Array.isArray(r));
var arr='{"name":"zs","age":100}';
var c=JSON.parse(arr);
console.log(c);
console.log(Array.isArray(c));
栈方法
push()
pop()
队列
shift()
unshift()
举例:
var arr=[];
arr.push(100,200);
arr.unshift('hello','world');
console.log(arr);
console.log(arr.pop());
console.log(arr.shift());
console.log(arr);
排序
排序依据默认是ASCII 字符串类型的数据项不能以算术操作符进行排序依据
reverse()
默认排序:
var arr=[3,4,2,6,1];
console.log(arr.reverse());
**自定义排序:**该方法可以接受一个比较函数作为参数,比较函数有两个参数
var arr=[1,10,2,23];
function compare(v1,v2){
return v1-v2;
arr.reverse(compare);
console.log(arr);
sort()
默认排序:
var arr=[3,4,2,6,1];
var result=arr.sort();
console.log(result);
console.log(arr);
var arr=[1,10,2,22];
console.log(arr.sort());
console.log(arr.reverse());
自定义排序:
var arr=[1,10,2,23];
function compare(v1,v2){
return v1-v2;
}
arr.sort(compare);
console.log(arr);
var arr=[1,10,2,23];
function compare(n1,n2){
return n2-n1;
}
arr.sort(compare);
console.log(arr);
截取方法
concat()
数据项的一个层次的简单拼接 原数组不受影响
var arr=[100,200];
var result=arr.concat(300);
var result2=arr.concat('hello');
var result3=arr.concat([1,2,3]);
console.log(arr,result,result2,result3);
slice
根据索引下标截取数据项 [start,end) 原数组不受影响 应用场景1:深拷贝
var arr=[100,200,300,400,500];
var result1=arr.slice(0);
var result2=arr.slice(0,3);
var result3=arr.slice(3,4);
console.log(arr,result1,result2,result3);
应用场景2:类数组对象(如arguments) 转换成 数组对象
function add(){
console.log(arguments,arguments.length);
var arr=Array.prototype.slice.call(arguments,0);
console.log(arr);
}
add(1,2,3,4);
splice
两个参数:
var arr=[100,200,300,400];
var result=arr.splice(1,2);
console.log(arr);
var arr=[100,200,300,400];
var result=arr.splice(7,3);
console.log(arr);
三个参数:
var arr=[10,20,30,40];
var result=arr.splice(1,2,'a','b');
console.log(arr);
var arr=[10,20,30,40];
var result=arr.splice(1,0,'a','b');
console.log(arr);
索引方法
都是通过数据项的值查找在数据中的索引位置 ===
indexOf()
var arr=[100,200,300,100,200,300,400];
var result=arr.indexOf(100);
var result2=arr.indexOf(100,2);
var result3=arr.indexOf(600);
var result4=arr.lastIndexOf(100);
var result5=arr.indexOf('100');
console.log(result,result2,result3,result4,result5);
lastIndexOf()
var arr=[
{name:'zs',age:10},
{name:'ls',age:20},
]
var result=arr.indexOf({name:'zs',age:10});
console.log(result);
var ob={name:'zs',age:10};
var arr=[
{name:'zs',age:10},
{name:'ls',age:20},
ob
];
var result=arr.indexOf(ob);
console.log(result);
迭代方法
函数作为参数:
functionName(数组中迭代的值,索引下标,数组本身){
//运行该函数的参数是可选的↑
规定业务逻辑和算法
return 返回值;
}
every()
对数组中的每一运行给定的函数,如果该函数对每一项都返回true,则该函数返回true
var arr=[100,200,300,400];
function bigger(value){
return value>200;
}
var result=arr.every(bigger);
console.log(result);
some()
对数组中的每一运行给定的函数,如果该函数对任一项返回true,则返回true
var arr=[100,200,300,400];
function bigger(value){
return value>200;
}
var result=arr.some(bigger);
console.log(result);
filter()
(过滤:)对数组中的每一运行给定的函数,会返回满足该函数的项组成的数组
var arr=[100,200,300,400];
function bigger(value){
return value>200;
}
var result=arr.filter(bigger);
console.log(result);
map()
(映射:)对数组中的每一运行给定的函数,返回每次函数调用的结果组成的数组
var arr=[100,200,300,400];
function bigger(value){
return value>200;
}
var result=arr.map(bigger);
console.log(result);
var arr=[100,200,300,400];
function bigger(value){
return value>200;
}
var result =arr.map(function(item,index,arr{
return item * 2;
});
console.log(result);
forEach()
对数组中的每一运行给定的函数,没有返回值,常用来遍历元素
var arr=[100,200,300,400];
function bigger(value){
return value>200;
}
arr.forEach(function(value,index){
console.log(value,index);
});
例题
var stus=[
{name:'张三',age:10},
{name:'李四',age:18},
{name:'王五',age:20},
{name:'赵六',age:30}
];
var bool=stus.some(function(value){
return value.age>=18;
});
console.log(bool);
var bool=stus.some(function(value){
return value.age<18;
});
console.log(bool);
var bool=stus.some(function(obj){
return obj.age>=18;
});
console.log(bool);
var arr=stus.filter(function(obj){
return obj.age>=18;
});
console.log(arr);
var arr=stus.map(function(obj){
return '学生'+obj.name;
});
console.log(arr);
var arr=stus.map(function(obj){
return obj.age;
})
console.log(arr);
arr.forEach(function(value){
console.log("年龄"+value+"岁");
});
|