JavaSrprit的数组
1数组定义,数组的特点
数组对象是使用单独的变量名来存储一系列的值。
如果你有一组数据(例如:车名字),存在单独变量如下所示:
var car1=“Saab”;
var car2=“Volvo”;
var car3=“BMW”;
然而,如果你想从中找出某一辆车?并且不是3辆,而是300辆呢?这将不是一件容易的事!
最好的方法就是用数组。
数组可以用一个变量名存储所有的值,并且可以用变量名访问任何一个值。
数组中的每个元素都有自己的的ID,以便它可以很容易地被访问到。
6.2 创建数组
创建一个数组,有三种方法。
下面的代码定义了一个名为 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”];
6.3 访问数组
通过指定数组名以及索引号码,你可以访问某个特定的元素。
下标 从 0 开始 ,下标0 是第一个元素
访问格式:
数组名【下标】
以下实例可以访问myCars数组的第一个值:
var name=myCars[0];
以下实例修改了数组 myCars 的第一个元素:
myCars[0]=“Opel”;
[0] 是数组的第一个元素。[1] 是数组的第二个元素。 | |
---|---|
在一个数组中你可以有不同的对象
所有的JavaScript变量都是对象。数组元素是对象。函数是对象。
因此,你可以在数组中有不同的变量类型。
可以在一个数组中包含对象元素、函数、数组:
myArray[0]=Date.now;
myArray[1]=myFunction;
myArray[2]=myCars;
6.4 数组长度
使用数组对象预定义属性 arr.length — 数据的个数
6.5数组中常用的方法
6.5.1数组元素的添加和删除
unshift()
在数组的开头添加新元素 - unshift() -----返回值是 添加后数组的长度
在这里插入代码片
<script>
function myFunction(){
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.unshift("Lemon","Pineapple");
var x=document.getElementById("demo");
x.innerHTML=fruits;
}
</script>
push()
数组的末尾添加新的元素 - push() — 返回值 是 添加后数组的长度
在这里插入代码片
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction(){
fruits.push("Kiwi")
var x=document.getElementById("demo");
x.innerHTML=fruits;
}
</script>
pop()
删除数组最后一个元素 - pop() ----- 返回删除的数据
在这里插入代码片
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction(){
fruits.pop();
var x=document.getElementById("demo");
x.innerHTML=fruits;
}
shift()
删除数组第一个元素 - shift() — 返回 是删除的元素数据
在这里插入代码片
<script>
var fruits = ["Banana", "Orange", "Apple", "Mango"];
function myFunction(){
var delell = fruits.shift();
var x=document.getElementById("demo");
x.innerHTML= '删除后数组为:' + fruits;
document.getElementById("demo2").innerHTML= '删除的元素是:' + delell;
}
</script>
6.5.2 join()
用数组的元素组成字符串 - join()
join() 方法用于把数组中的所有元素放入一个字符串。
元素是通过指定的分隔符进行分隔的。
语法
arrayObject.join(separator)
参数 | 描述 |
---|---|
separator | 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 |
返回值
返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。
在这里插入代码片
<script>
function myFunction(){
var fruits = ["Banana", "Orange", "Apple", "Mango"];
var x=document.getElementById("demo");
x.innerHTML=fruits.join();
}
6.5.4 sort()
数组排序(按字母顺序升序)- sort()
在这里插入代码片
<script>
function myFunction(){
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.sort();
var x=document.getElementById("demo");
x.innerHTML=fruits;
}
</script>
数组排序(按数字顺序升序)- sort()
注意 sort() – 传一个函数参数 并返回 顺序值 a-b
在这里插入代码片
arr.sort( function(a,b){
return a - b
})
<script>
function myFunction(){
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return a-b});
var x=document.getElementById("demo");
x.innerHTML=points;
}
</script>
数组排序(按数字顺序降序)- sort()
注意 sort() – 传一个函数参数 并返回 顺序值 b-a
在这里插入代码片
arr.sort( function(a,b){
return b - a
})
<script>
function myFunction(){
var points = [40,100,1,5,25,10];
points.sort(function(a,b){return b-a});
var x=document.getElementById("demo");
x.innerHTML=points;
}
</script>
6.5.6 slice()
从一个数组中选择元素 - slice()
slice() 方法可从已有的数组中返回选定的元素。
语法
arrayObject.slice(start,end)
参数 | 描述 |
---|---|
start | 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 |
end | 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 |
在这里插入代码片
<script>
function myFunction(){
var fruits = ["Banana", "Orange", "Lemon", "Apple", "Mango"];
var citrus = fruits.slice(1,3);
var x=document.getElementById("demo");
x.innerHTML=citrus;
}
</script>
**注释:**您可使用负值从数组的尾部选取元素。
**注释:**如果 end 未被规定,那么 slice() 方法会选取从 start 到数组结尾的所有元素。
6.5.7 splice()
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 —万能公式。
**注释:**该方法会改变原始数组。
语法
arrayObject.splice(index,howmany,item1,.....,itemX)
参数 | 描述 |
---|---|
index | 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。下标 |
howmany | 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 数量 |
item1, …, itemX | 可选。向数组添加的新项目。 添加的数据 |
返回值
类型 | 描述 |
---|---|
Array | 包含被删除项目的新数组,如果有的话。 |
说明
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
**注释:**请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改。
6.5.8 concat()
concat() 方法用于连接两个或多个数组。
该方法不会改变现有的数组,而仅仅会返回被连接数组的一个副本。
语法
arrayObject.concat(arrayX,arrayX,......,arrayX)
参数 | 描述 |
---|---|
arrayX | 必需。该参数可以是具体的值,也可以是数组对象。可以是任意多个。 |
返回值
返回一个新的数组。该数组是通过把所有 arrayX 参数添加到 arrayObject 中生成的。如果要进行 concat() 操作的参数是数组,那么添加的是数组中的元素,而不是数组。
6.5.9 reverse()
reverse() 方法用于颠倒数组中元素的顺序。
语法
arrayObject.reverse()
提示和注释
**注释:**该方法会改变原来的数组,而不会创建新的数组。
实例
在本例中,我们将创建一个数组,然后颠倒其元素的顺序:
在这里插入代码片
输出:
George,John,Thomas
Thomas,John,George
6.5.10 toString()
toString() 方法可把数组转换为字符串,并返回结果。
语法
arrayObject.toString()
返回值
arrayObject 的字符串表示。返回值与没有参数的 join() 方法返回的字符串相同。
说明
当数组用于字符串环境时,JavaScript 会调用这一方法将数组自动转换成字符串。但是在某些情况下,需要显式地调用该方法。
6.6数组遍历
6.6.1 for循环:使用频率最高,也是最基本的一种遍历方式。
```handlebars
在这里插入代码片
var arr = ['a','b','c','d','e'];
for (var i = 0, i < arr.length; i++) {
console.log(i); // 0 1 2 3 4
console.log(arr[i]); //a b c d e
}
## 6.6.2 for...in循环:for...in循环可用于循环对象和数组
var arr = [‘a’,‘b’,‘c’,‘d’,‘e’];
for(var i in arr) {
console.log(i); // 0 1 2 3 4 返回数组索引
console.log(arr[i]) // a b c d e
}
数组去重复
```handlebars
在这里插入代码片
function quchong(arr){
var marr=[];
for(var i in arr){
if(marr.indexOf(arr[i])==-1){
marr.push(arr[i]);
}
}
return marr;
}
注:arr.indexOf(值),获取某个值在数组中的元素的索引值,如果不存在返回-1
6.7检测数组
检测数组: instanceof 判断一个对象是不是数组 // 实例 instanceof 对象
isArray(变量名) 如果是数组,返回true,不是数组返回false // Array.isArray()
6.8多维数组 (二维)
在这里插入代码片
var a=[1,2,3]
var b=[[11,22,33],["aa","bb","cc"],["xx","yy","zz"]]
b[1][1]