一.什么是数组
就是将多个数据一起存放
二.怎样创建数组
<script type="text/javascript">
// 第一种,比较麻烦的
var color= new Array();
color[0] = 'red';
color[1] = 'black';
color[2] = 'yellow';
color[3] = 'blue';
color[4] = 'green';
console.log(color); // ["red", "black", "yellow", "blue", "green"]
// 第二种,创建数组并初始化
var name = new Array('张三','李四','小明','何海杰')
console.log(name); // 张三,李四,小明,何海杰
//第三种,我比较喜欢的
var computer = ['惠普','拯救者','雷神','联想']
console.log(computer); //["惠普", "拯救者", "雷神", "联想"]
</script>
三.数组单个元素的访问和长度
因为每个数组都有自己的下标,从0开始,所以,访问数组元素的话只需要访问下标号就行
获得数组长度,我们用arr.length 方法
<script type="text/javascript">
var computer = ['惠普','拯救者','雷神','联想']
console.log(computer[1]); //因为下标从 0 开始,所以下标 1 就是拯救者
// 获取数组的长度一般用 arr.length 方法
console.log(computer.length); // 4
</script>
四.数组的遍历
利用for循环可以将数组里的元素一个个的遍历出来
<script type="text/javascript">
var num = [1,12,345,43,12]
for(var i = 0;i < num.length;i++){
console.log(num[i]);
}
// 1 12 345 43 12
</script>
五.数组元素的添加和删除
添加到末尾:arrayObj.push()
添加到开头:arrayObj.unshift()
删除最后一个:arrayObj.pop()
删除第一个:arrayObj.shift()
删除多个:
arrayObj.splice(deletePos)
arrayObj.splice(deletePos,deleteCount)
arrayObj.splice(deletePos, deleteCount, insert)
<script type="text/javascript">
// 添加 1 和 8 到数组的开头和结尾
var num = [2,3,4,5,6,7]
var num1 = num.unshift(1) //添加 1 到开头
var num2 = num.push(8) //添加 8 到结尾
console.log(num2) //返回的是添加末尾后num的长度 8
console.log(num); // [1, 2, 3, 4, 5, 6, 7, 8]
//删除第一个和最后一个元素
var num = [1,1,2,3,4,5,6,6]
var num1 = num.pop() //删除最后一个元素
var num2 = num.shift() //删除第一个元素
console.log(num); // [1, 2, 3, 4, 5, 6]
//删除多个元素
var num = [12,213,345,213,12,123,34]
var str = ['a','b','c','d','e','f','g']
var ele = ['h','i','j','k','l','m','n']
var num1 = num.splice(4) //删除的是下标 4 后面的所有元素,并返回
console.log(num1); // [12, 123, 34],返回删除的元素
console.log(num); // [12, 213, 345, 213],剩余的元素
var str1 = str.splice(2,3) //找到下标 2 的元素,然后删除3个
console.log(str1); // ["c", "d", "e"],返回删除的元素
console.log(str); // ["a", "b", "f", "g"],剩余的元素
var ele1 = ele.splice(2,3,'f') //找到下标 2 的元素,然后删除3个,在补一个'f'
console.log(ele1); // ["j", "k", "l"],返回删除的元素
console.log(ele); // ["h", "i", "f", "m", "n"],剩余的元素
</script>
六.数组元素的截取 合并 拷贝 和反转
数组元素的截取:arrayObj.slice(start, [end])
数组元素的拷贝:arrayObj.concat()
数组元素的合并:arrayObj.concat([item])
数组元素的反转:arrayObj.reverse()
<script type="text/javascript">
// 截取数组,并不会对原数组产生影响
var num = [1,2,3,4,5,6,7]
var str = [8,9,10,11,12,13]
var num1 = num.slice(2,4) // 截取下标 2-4 之间的数组元素
console.log(num1); // [3, 4]
console.log(num); //[1, 2, 3, 4, 5, 6, 7]
// 拷贝数组
var str1 = str.concat(); // 单纯的复制一个数组
console.log(str1);
var str2 = str.slice(0,str.length) // 截取下标 0-最后 之间的数组元素并打印,跟复制一样
console.log(str2);
// 合并数组
var concat = num.concat(str) // 合并num 和 str 两个数组
console.log(concat);
// 反转数组
var reverse = num.reverse() // 将数组里面的元素翻转过来
console.log(reverse); // [7, 6, 5, 4, 3, 2, 1]
</script>
七.数组的排序和冒泡排序
数组的排序:arrayObj.sort()
<script type="text/javascript">
// 数组的排序
var num = [1, 3, 4, 5, 7, 2, 8]
var str = [12, 34, 4356, 123, 1235, 345, 123]
var num1 = num.sort() // 对数字进行排序,字符串排序,所以限制个位数,局限很大
console.log(num1);
var num2 = str.sort(function(a, b) {
return a - b
})
// function(a,b){return a - b} 牛逼的代码,放到sort里面就可以正常排序
console.log(num2); //[12, 34, 123, 123, 345, 1235, 4356]
//冒泡排序
for (var i = 0; i < str.length - 1; i++) {
for (var j = 0; j < str.length - i - 1; j++){
if(str[j] > str[j + 1]){
var temp = str[j]
str[j] = str[j + 1]
str[j + 1] = temp
}
}
}
console.log(str); //[12, 34, 123, 123, 345, 1235, 4356]
</script>
八.字符串与数组的相互转换
1.数组转换成字符串
arrayObj.toString() 返回连接后的字符串,由逗号(,)连接。
arrayObj.join(bystr) 返回连接后字符串,bystr作为连接数组中元素的分隔符。
2.字符串转换为数组
str.split(bystr) 将字符串按bystr字符切割之后以数组形式返回。
<script type="text/javascript">
// 数组转换成字符串
var num = [1,2,3,4]
var str = num.join('-')
console.log(str);
var str1 = num.toString()
console.log(str1);
// 字符串转化为数组
var str2 = 'a,s,r,t,g,q';
var arr = str2.split(',') // 按照 ‘,’转换成字符串 长度为 6
var arr1 = str2.split('') // 按照 ‘’转换成字符串 长度为 11
console.log(arr);
console.log(arr1);
</script>