数组应用

删除元素

shift()方法和pop()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
/**
* shift方法和pop方法
* shift()方法
* pop()方法
* @type {string[]}
*/

var arr=['a','b','c','d','e']
console.log("原数组为:"+arr)
console.log("删除末尾元素为:"+arr.pop())//删除末尾元素
console.log("改变后的元素为:"+arr)
console.log("删除开始元素为:"+arr.shift())//删除起始元素
console.log("改变后的元素为:"+arr)
</script>

数组合并

concat()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
<script>
/**
* 合并数组或者元素为新数组
* concat()方法
* @type {string[]}
*/
var arr=['a','b','c','d','e']
var arr1=[1,2,3,4,5]
var arr2=arr.concat(arr1)//当传入的参数为数组时,则进行数组连接
var arr3=arr.concat(111,'b')//当参数为非数组元素,参数个数不限
console.log("合并的新数组1为:"+arr2)
console.log("合并的新数组2为:"+arr3)
</script>

数组转字符串

join()和toString()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<script>
/**
* 数组转字符串方法
* join()
* toString()
* @type {string[]}
*/
var arr=['a','b','c','d'];
var str=arr.join();//返回字符串'a,b,c,d'__默认用','分隔
var str1=arr.join("");//返回字符串"abcd"
var str2=arr.join("-");//返回字符串"a-b-c-d"
var str3=arr.toString();//返回字符串'a,b,c,d'
console.log(str);
console.log(str1);
console.log(str2);
console.log(str3);
</script>

数组填充方法

fill()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
/**
* 数组填充方法
* fill()
* @type {string[]}
*/

var arr1 = ['h','a','k','c','e'];
var arr2 = ['h','a','k','c','e'];
var a,b;
a=arr1.fill("a");//将数组中的元素全部用"a"填充
b=arr2.fill("a",0,2);//将数组中的元素部分替换,第二个参数表示起始值,最后一个参数表示索引值
console.log(a);
console.log(b);

</script>

数组翻转

reverse()方法

1
2
3
4
5
6
7
8
9
10
11
12
<script>
/**
* 数组翻转
*reverse()方法
* @type {string[]}
*/
var arr=['a','b','c','d','e']
console.log("原数组:"+arr)//调用方法过后原数组顺序被改变,因此在这提前输出
var arr1;
arr1=arr.reverse()//翻转数组
console.log("翻转后的数组:"+arr1)
</script>

浅拷贝

slcie()方法

1
2
3
4
5
6
7
8
9
10
11
<script>
/**
* 浅拷贝
* slcie()方法
* @type {string[]}
*/
var arr=['a','b','c','d','e']
console.log(arr.slice())//不设置参数则表示拷贝数组所有元素
console.log(arr.slice(1))//拷贝起始值到结束
console.log(arr.slice(0,3)) //参数1:起始值 参数2:结束值(注:不包含结束值)
</script>

排序

sort()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
/**
* sort()方法的使用
* @type {number[]}
*/
var arr=[1,2,3,4,56,7,8,9]
console.log("默认:"+arr.sort())//默认按照字符编码进行排序,如下arr1
console.log("升序:"+arr.sort((a, b)=>a-b))//数值排序(升序)
console.log("降序:"+arr.sort((a, b)=>b-a))//数值排序(降序)
var arr1 = ['h','a','k','c','e'];
arr1.sort();
console.log(arr1) // ["a", "c", "e", "h", "k"]

</script>

添加或删除元素

splcie()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<script>
/**
* 添加或删除元素
* splcie()方法
* @type {string[]}
*/

var arr=['a','b','c','d','e']
var arr1=['a','b','c','d','e']
arr.splice(1,1)//第一个参数值为索引值,第二个为删除个数
arr1.splice(1,0,'hhh')//第三个参数表示添加值,从索引值开始添加,个数不限,没有则表示不添加
console.log(arr)
console.log(arr1)
</script>

二维数组转置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<script>
/**
* 二维数组转置
* 注:如果行列不想等,则需要考虑新数组的行列问题(a[5][4]----a[4][5])
* @type {number[][]}
*/

const arr = [
[24, 26, 28, 29],
[23, 25, 28, 22],
[24, 26, 27, 28],
[25, 27, 21, 20],
];
const arr1=[]//定义另一个二维数arr1组接arr
console.log("最初的第一行"+arr[0])
console.log("最初的第二行"+arr[1])
console.log("最初的第三行"+arr[2])
console.log("最初的第四行"+arr[3])
for (let i=0;i<arr.length;i++){
arr1[i]=[]//初始化行
for (let j=0;j<arr[i].length;j++){
arr1[i][j]=arr[j][i]//给定每一行的值
}
}
console.log("\n")
console.log("最后的第一行"+arr1[0])
console.log("最后的第二行"+arr1[1])
console.log("最后的第三行"+arr1[2])
console.log("最后的第四行"+arr1[3])
console.log(arr)
</script>

数组检索

lastIndexOf()方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<script>
/**
* 数组检索,返回所有的索引值
* @type {number[]}
*/
var arr=[2,1,2,23,4,5,6,7,2];
var res=[];
var search=2
var i=arr.lastIndexOf(search);//检索第一个search元素所在的索引值(从后往前检测)__返回7
while (i!==-1){
res.push(i);
i=(i>0?arr.lastIndexOf(search,i-1):-1);//i>0?如果不是最后一个元素就继续检索下一个元素,否则返回-1程序结束
}
console.log("原数组为:"+arr);
console.log("需要检索的元素"+search+"在原数组中所有的索引位置为:"+res);
</script>

二维数组求和

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<script>
/**
* 求二维数组的和
* @type {number[][]}
*/
var arr=[
[24,26,28,29],
[23,25,28,22],
[24,26,27,28],
[22,21,1]
]
let sum = 0;
for (let i=0;i<arr.length;i++){
for (let j=0;j<arr[i].length;j++){
sum+=arr[i][j];
}
}
document.write(sum)
</script>