JavaScript对象——Array对象
Array对象用于在变量中存储多个值,下标从0开始,一直到length-1
创建 Array 对象的语法:
new Array();
new Array(size);
new Array(element0, element1, …, elementn);
首先是Array的属性
1.constructor返回创建数组对象的原型函数
var test=new Array();//输出:This is an Array
// var test=true; 输出:This is a Boolean
if (test.constructor==Array){
document.write("This is an Array");
}
if (test.constructor==Boolean){
document.write("This is a Boolean");
}
if (test.constructor==Date){
document.write("This is a Date");
}
if (test.constructor==String){
document.write("This is a String");
}
2.length设置或返回元素的数组个数
var fruits=["apple","banana","orange"];
// 设置数组长度:
fruits.length=5;
document.write(fruits);
//输出:apple,banana,orange,,
// 返回元素的数组个数:
document.write(fruits.length);
//输出:5
3.prototype允许你向数组添加属性或方法
语法:Array.prototype.name=value
在JavaScript对象中,Prototype是一个全局属性
function people(name,grade){
this.name=name;
this.grade=grade;
}
var alice=new people("Alice",98);
people.prototype.age=null;
alice.age=19;
document.write(alice.age);
//输出:19
接下来是Array的方法
1.concat():连接两个或者更多的数组,并返回结果(不改变原数组)
var arr0=[1,2,"a",true];
var arr1=["false",9,false];
document.write(arr0.concat(arr1,"hello"));
//输出: 1,2,a,true,false,9,false,hello
document.write(arr0);
//输出:1,2,a,true
2.copyWithin():从数组指定位置拷贝元素到数组另一个指定位置中(改变原数组)
var arr0=[1,2,"a",true];
document.write(arr0.copyWithin(1,3));
// 把下标为3的元素的值拷贝到下标为1的元素上
//输出:1,true,a,true
3.entrise():返回数组的可迭代对象
把可以通过for…in…这类语句迭代读取一条数据供我们使用的对象称之为可迭代对象
var arr0=[1,2,"a",true];
var a=arr0.entries();
document.write(a.next().value+"<br>");//输出:0,1
document.write(a.next().value+"<br>");//输出:1,true
document.write(a.next().value+"<br>");//输出:2,a
document.write(a.next().value+"<br>");//输出:3,true
4. every():检测数组中的每个元素是否都满足条件
function get_Age(age){
return age>=18;
}
var age=[15,18,25,22];
document.write(age.every(get_Age));//输出:false
5.fill():用一个固定值填充数组
语法: array.fill(value, start, end)
参数: value:填充的值, start:起始位置, end:填充终止位置(不包括)
var arr2=[12,25,36,45];
document.write(arr2.fill(1));
//输出:1,1,1,1
var arr3=[19,96,6,"a",45,89];
document.write(arr3.fill("hello",1,4));
//输出:19,hello,hello,hello,45,89
6.filter():检测元素,返回数组中符合条件所有元素的数组(不改变原数组)
function search_Age(age){
return age>=18;
}
var age=[15,18,25,22];
document.write(age.filter(search_Age));
//输出:18,25,22
7. find():返回符合传入函数条件的第一个数组元素
8.findIndex():返回符合传入函数条件的数组元素下标
function search_Age(age){
return age>=18;
}
var age=[15,12,25,22];
document.write(age.find(search_Age)+"---"+age.findIndex(search_Age));
//输出:25---2
9.forEach():数组每个元素都执行一次回调函数
function for_Each(item,index){
document.write("index["+index+"]"+"---"+item+"<br>");
}
var arr4=[89,5,6,53];
document.write(arr4.forEach(for_Each));
//输出:
//index[0]---89
//index[1]---5
//index[2]---6
//index[3]---53
//undefined
10.from():通过给定的对象中创建一个数组
from() 方法用于通过拥有 length 属性的对象或可迭代的对象来返回一个数组
如果对象是数组返回 true,否则返回 false
var arr5=Array.from("hello");
if(arr5 instanceof Array){
//instanceof:测试它左边的对象是否是它右边的类的实例,返回 boolean 的数据类型
document.write(arr5);
}
else{
document.write("该对象不是数组!");
}
//输出:h,e,l,l,o
11.includes() :用来判断一个数组是否包含一个指定的值,如果是返回 true,否则false
12. indexOf():搜索数组中的元素,并返回它所在的位置
var arr5=["he","l","l","o"];
document.write(arr5.includes("l")+"---"+arr5.indexOf("l"));
//输出:true---1
13.isArray():判断一个对象是否为数组
语法:Array.isArray(obj)
var arr5=["he","l","l","o"];
document.write(Array.isArray(arr5));
//输出:true
14.join(seperator):返回一组由指定拼接符拼接成的字符串
var arr1=["false",9,false];
document.write("join()的结果是:"+arr1.join()+"<br>");
//输出:join()的结果是:true,false,1,5,9,
document.write("join('')的结果是:"+arr1.join('')+"<br>");
//输出:join('')的结果是:truefalse159
document.write("join('/')的结果是:"+arr1.join('/')+"<br>");
//输出:join('/')的结果是:true/false/1/5/9/
document.write("join('#')的结果是:"+arr1.join('#')+"<br>");
//输出:join('#')的结果是:true#false#1#5#9#
15.keys():返回数组的可迭代对象,包含原始数组的键
var arr0=[1,2,"a",true];
var b=arr0.keys();
document.write(b.next().value+"<br>");//输出:0
document.write(b.next().value+"<br>");//输出:1
document.write(b.next().value+"<br>");//输出:2
document.write(b.next().value+"<br>");//输出:3
16.lastIndexOf():搜索数组中的元素,并返回它最后出现的位置
var color=["red","yellow","red","blue","black"];
document.write(color.lastIndexOf("red"));
//输出:2
17.map():返回一个新数组,数组中的元素为原始数组元素调用函数处理后的值(不会改变原数组)
var arr6=[1,9,36];
document.write(arr6.map(Math.sqrt));
//输出:1,3,6
18.push():从数组末尾添加新值,并返回数组的长度
19.pop():从数组末尾删除元素,并返回被删除元素的值
这里用一个小练习来举例:
var arr10=[];
var num=parseInt(Math.random()*10);
document.write("次数为:"+num+"<br>");
for(var i=0;i<num;i++){
var a=parseInt(Math.random()*10);
arr10.push(a);
document.write(arr10+"<br>");
}
for(var i=num;i>0;i--){
document.write(arr10.pop()+"<br>");
}
因为是随机数,所以每次输出结果都不一样,这里我放上自己的运行结果:
次数为:3
2
2,9
2,9,6
6
9
2
20.shift() :把数组的第一个元素从其中删除,并返回第一个元素的值。
21.unshift():向数组的开头添加一个或更多元素,并返回新的长度。
这里用一个小练习来举例:
var arr13=[];
var num1=parseInt(Math.random()*10);
document.write("次数为:"+num1+"<br>");
for(var i=0;i<num1;i++){
var a=parseInt(Math.random()*10);
arr13.unshift(a);
document.write(arr13+"<br>");
}
for(var j=num1;j>0;j--){
document.write(arr13.shift()+"<br>");
}
因为是随机数,所以每次输出结果都不一样,这里我放上自己的运行结果:
次数为:3
2
7,2
1,7,2
1
7
2
22.reduce():将数组元素计算为一个值(从左到右)
23.reduceRight():将数组元素计算为一个值(从右到左)
function myfunction(a,b){
return a-b;
}
var arr7=[1,2,3,4,5];
document.write(arr7.reduce(myfunction));//输出:-13
document.write(arr7.reduceRight(myfunction));//输出:-5
24.reverse():颠倒元素位置
var arr7=[1,2,3,4,5];
document.write(arr7.reverse());
//输出:5,4,3,2,1
25.slice(start,end)切片获取,不包括end
var arr1=["true",false,1,5,9];
document.write("获取下标为1到3的数组片段:"+arr1.slice(1,4)+"<br>");
//输出:获取下标为1到3的数组片段:false,1,5
document.write("获取的片段:"+arr1.slice(1)+"<br>");
// 默认从设置的下标开始全部取完
//输出:获取的片段:false,1,5,9,
document.write("获取下标为-6到-4的数组片段:"+arr1.slice(-6,-3));
//输出:获取下标为-6到-4的数组片段:true,false,1
26.splice(start,count,e1,e2)从start开始,删除count个元素,并将e1,e2插入(改变了原数组)
var arr1=["true",false,1,5,9];
var arr3=arr1.splice(2,3,"hei",6);
document.write("修改之后的数组为:"+arr1+"<br>");
//输出:修改之后的数组为:true,false,hei,6,
document.write("裁剪下来的数组为:"+arr3+"<br>");
//输出:裁剪下来的数组为:1,5,9
27.some():检测数组中是否有元素符合指定条件
function get_Age(age){
return age>=18;
}
var age=[15,12,25,22];
document.write(age.some(get_Age));
//输出:true
28.sort():快速排(改变原数组)
可以排序字符,无法比较异位数字
使用数字排序,必须通过一个函数作为参数来调用
函数指定数字是按照升序还是降序排列
从小到大 a-b 从大到小b-a
var arr9=[1,23,69,456];
document.write("不用函数排列数字:"+arr9.sort()+"<br>");
//输出:不用函数排列数字:1,23,456,69
function mysort1(a,b){
return a-b;
}
function mysort2(a,b){
return b-a;
}
document.write("使用函数正序排列数字:"+arr9.sort(mysort1)+"<br>");
//输出:使用函数正序排列数字:1,23,69,456
document.write("使用函数倒叙排列数字:"+arr9.sort(mysort2)+"<br>");
//输出:使用函数倒叙排列数字:456,69,23,1
document.write("该函数改变了原数组顺序:"+arr9);
//输出:该函数改变了原数组顺序:456,69,23,1
29.toString():将数组类型转化为字符串类型
var arr1=["true",false,1,5,9,undefined];
document.write("toString()的结果是:"+arr1.toString()+"<br>");
//输出:toString()的结果是:true,false,1,5,9,
document.write("类型为:"+typeof(arr1.toString())+"<br>");
//输出:类型为:string
document.write("长度为:"+arr1.toString().length);
//输出:长度为:17
30.valueOf():返回Array对象的原始值,不会改变原数组,即获取数组的原始写法(不会改变原数组)
var arr1=["true",false,1,5,9,undefined];
document.write("valueOf()的结果是:"+arr1.valueOf()+"<br>");
//输出:valueOf()的结果是:true,false,1,5,9,
document.write("类型为:"+typeof(arr1.valueOf())+"<br>");
//输出:类型为:object