什么是Array(数组)对象
数组对象的作用是:使用单独的变量名来存储一系列的值。
举个栗子🙋♂️
这段代码就是创建一个叫mycars的新数组 并且挨个赋值,
var mycars = new Array ( ) ;
mycars[ 0 ] = "Saab" ;
mycars[ 1 ] = "Volvo" ;
mycars[ 2 ] = "BMW" ;
什么是数组?
数组对象是使用单独的变量名来存储一系列的值。
如果你有一组数据(例如:车名字),存在单独变量如下所示:
var car1= "Saab" ;
var car2= "Volvo" ;
var car3= "BMW" ;
然而,如果你想从中找出某一辆车?并且不是3辆,而是300辆呢?这将不是一件容易的事!
最好的方法就是用数组。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。
创建一个数组
创建一个数组,有三种方法。
下面的代码定义了一个名为 myCars的数组对象: 1: 常规方式:
var myCars= new Array ( ) ;
myCars[ 0 ] = "Saab" ;
myCars[ 1 ] = "Volvo" ;
myCars[ 2 ] = "BMW" ;
2: 简洁方式:
var myCars= new Array ( "Saab" , "Volvo" , "BMW" ) ;
3: 字面:
var myCars= [ "Saab" , "Volvo" , "BMW" ] ;
在日常中 第三种是最常用也是最好用的一种
访问数组
通过指定数组名以及索引号码,你可以访问某个特定的元素。
以下实例可以访问myCars数组的第一个值:
var name= myCars[ 0 ] ;
以下实例修改了数组 myCars 的第一个元素:
myCars[ 0 ] = "Opel" ;
在一个数组中你可以有不同的对象
所有的JavaScript变量都是对象。数组元素是对象。函数是对象。
因此,你可以在数组中有不同的变量类型。
你可以在一个数组中包含对象元素、函数、数组:
myArray[ 0 ] = Date. now;
myArray[ 1 ] = myFunction;
myArray[ 2 ] = myCars;
数组方法和属性
使用数组对象预定义属性和方法:
var x= myCars. length
var y= myCars. indexOf ( "Volvo" )
数组属性
// constructor 返回创建数组对象的原型函数
// length 设置或返回数组元素的个数
//prototype 允许你向数组对象添加属性或方法
以下是属性的实例
< p id= "demo" > 点击按钮创建一个数组, 并显示它的构造函数constructor< / p>
< p id= "long" > < / p>
< p id= "proto" > < / p>
< button onclick= "myFunction()" > 点我显示构造函数< / button>
< script>
function myFunction ( ) {
var fruits = [ "pineapple" , "banana" , "pomelo" , "nectarine" ] ;
var x = document. getElementById ( "demo" ) ;
var y = document. getElementById ( "long" ) ;
x. innerHTML = fruits. constructor;
y. innerHTML = fruits. length;
}
< / script>
Array . prototype. myUcase = function ( ) {
for ( i = 0 ; i < this . length; i++ ) {
this [ i] = this [ i] . toUpperCase ( ) ;
}
}
var cars = [ "benchi" , "baoma" , "hongqi" , "hafo" ] ;
cars. myUcase ( ) ;
console. log ( cars) ;
Array对象方法
方法 描述 concat() 连接两个或更多的数组 ,并返回结果
var hege = [ "Cecilie" , "Lone" ] ;
var stale = [ "Emil" , "Tobias" , "Linus" ] ;
var kai = [ "Robin" ] ;
var children = hege. concat ( stale, kai) ;
copyWithin() 从数组的指定位置拷贝元素到数组的另一个位置中
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. copyWithin ( 2 , 0 ) ;
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. entries ( ) ;
erery() 检测数值元素的每个元素是否都符合条件
var ages = [ 32 , 33 , 16 , 40 ] ;
function checkAdult ( age ) {
return age >= 18 ;
}
function myFunction ( ) {
document. getElementById ( "demo" ) . innerHTML = ages. every ( checkAdult) ;
}
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. fill ( "Runoob" ) ;
filter() 检测数值元素,并返回符合条件的所有元素的数组
var ages = [ 32 , 33 , 16 , 40 ] ;
function checkAdult ( age ) {
return age >= 18 ;
}
function myFunction ( ) {
document. getElementById ( "demo" ) . innerHTML = ages. filter ( checkAdult) ;
}
find() 返回符合传入测试(函数)条件的数组元素
var ages = [ 3 , 10 , 18 , 20 ] ;
function checkAdult ( age ) {
return age >= 18 ;
}
function myFunction ( ) {
document. getElementById ( "demo" ) . innerHTML = ages. find ( checkAdult) ;
}
findindex() 返回符合传入测试(函数)条件的数组元素索引
var ages = [ 3 , 10 , 18 , 20 ] ;
function checkAdult ( age ) {
return age >= 18 ;
}
function myFunction ( ) {
document. getElementById ( "demo" ) . innerHTML = ages. findIndex ( checkAdult) ;
}
输出结果 2
forEach() 数组每个元素都执行一次回调函数。
< button onclick= "numbers.forEach(myFunction)" > 点我< / button>
< p id= "demo" > < / p>
< script>
demoP = document. getElementById ( "demo" ) ;
var numbers = [ 4 , 9 , 16 , 25 ] ;
function myFunction ( item, index ) {
demoP. innerHTML = demoP. innerHTML + "index[" + index + "]: " + item + "<br>" ;
}
< / script>
var myArr = Array. from ( "RUNOOB" ) ;
includes() 判断一个数组是否包含一个指定的值。
let site = [ 'runoob' , 'google' , 'taobao' ] ;
site. includes ( 'runoob' ) ;
site. includes ( 'baidu' ) ;
[ 1 , 2 , 3 ] . includes ( 2 ) ;
[ 1 , 2 , 3 ] . includes ( 4 ) ;
[ 1 , 2 , 3 ] . includes ( 3 , 3 ) ;
[ 1 , 2 , 3 ] . includes ( 3 , - 1 ) ;
[ 1 , 2 , NaN ] . includes ( NaN ) ;
indexOf() 搜索数组中的元素,并返回它所在的位置。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
var a = fruits. indexOf ( "Apple" ) ;
< script>
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
console. log ( Array. isArray ( fruits) )
< / script>
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
var energy = fruits. join ( ) ;
keys() 返回数组的可迭代对象,包含原始数组的键(key)。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. keys ( ) ;
lastIndexOf() 搜索数组中的元素,并返回它最后出现的位置。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
var a = fruits. lastIndexOf ( "Apple" ) ;
map() 通过指定函数处理数组的每个元素,并返回处理后的数组。
var numbers = [ 4 , 9 , 16 , 25 ] ;
function myFunction ( ) {
x = document. getElementById ( "demo" )
x. innerHTML = numbers. map ( Math. sqrt) ;
}
pop() 删除数组的最后一个元素并返回删除的元素。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. pop ( ) ;
push() 向数组的末尾添加一个或更多元素,并返回新的长度。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. push ( "Kiwi" )
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. shift ( )
unshift() 向数组的开头添加一个或更多元素,并返回新的长度。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. unshift ( "Lemon" , "Pineapple" ) ;
reduce() 将数组元素计算为一个值(从左到右)。
var numbers = [ 65 , 44 , 12 , 4 ] ;
function getSum ( total, num ) {
return total + num;
}
function myFunction ( item ) {
document. getElementById ( "demo" ) . innerHTML = numbers. reduce ( getSum) ;
}
reduceRight() 将数组元素计算为一个值(从右到左)。
var numbers = [ 65 , 44 , 12 , 4 ] ;
function getSum ( total, num ) {
return total + num;
}
function myFunction ( item ) {
document. getElementById ( "demo" ) . innerHTML = numbers. reduceRight ( getSum) ;
}
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. reverse ( ) ;
slice() 选取数组的一部分,并返回一个新数组。
var fruits = [ "Banana" , "Orange" , "Lemon" , "Apple" , "Mango" ] ;
var citrus = fruits. slice ( 1 , 3 ) ;
some() 检测数组元素中是否有元素符合指定条件。
var ages = [ 3 , 10 , 18 , 20 ] ;
function checkAdult ( age ) {
return age >= 18 ;
}
function myFunction ( ) {
document. getElementById ( "demo" ) . innerHTML = ages. some ( checkAdult) ;
}
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. sort ( ) ;
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. splice ( 2 , 0 , "Lemon" , "Kiwi" ) ;
toString() 把数组转换为字符串,并返回结果。
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
fruits. toString ( ) ;
var fruits = [ "Banana" , "Orange" , "Apple" , "Mango" ] ;
var v= fruits. valueOf ( ) ;
fruits. valueOf ( ) 与 fruits返回值一样。