js数组
数组常用方法 push
push 是用来在数组的末尾追加一个元素
var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] alert(test.push('貂蝉')) //长度是8 alert(test);// ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天','貂蝉']
数组常用方法 pop
pop 是用来删除数组末尾的一个元素
var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] alert(test.pop()) //删除数组的最后一个数据 武则天 alert(test) ['李白','安琪拉','猪八戒','韩信','李信','小乔']
数组常用方法 unshift
unshift
是在数组的最前面添加一个元素
var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] alert(test.unshift('亚索')) // 返回的也是新数组的长度 alert(test) //亚索,李白,安琪拉,猪八戒,韩信,李信,小乔,武则天
数组常用方法 shift
shift是删除数组最前面的一个元素
var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] alert(test.shift('猪八戒')) //李白 虽然指定猪八戒 但是还是删除数组的第一个元素 alert(test) //安琪拉,猪八戒,韩信,李信,小乔,武则天
数组常用方法 splice
截取数组中的某些内容,按照数组的索引来截取
//返回的是截取的数据 不管增删改都是返回截取的数据 // 如果实现数组的增 splice(开始的位置,0) 那么返回的结果是空白 //原数组发生了改变 //一个方法完成了数组的增删改 //数组.splice(开始的索引位置,0,新元素1,...新元素n) 增 //数组.splice(开始的索引位置,删除的个数) 删 //数组.splice(开始的索引位置,删除的个数,替换的元素1,...元素n) 改 // 数组.splice(开始的索引,截取多少个) var test = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] // var res = test.splice(2,2) // 删除 // alert(test) //李白,安琪拉,李信,小乔,武则天 原数组发生了变化 // alert(res) //猪八戒,韩信 // alert(test.splice(2,2,'李青','格雷福斯') )//替换 alert(test.splice(2,0,'李青','格雷福斯'))// 增加 // alert(test)
数组常用方法 reverse
reverse 是用来反转数组使用的
var arr = [1, 2, 3] // 使用 reverse 方法来反转数组 arr.reverse() console.log(arr) // [3, 2, 1]
数组常用方法 sort
是用来给数组排序的
var arr = [2, 3, 1] // 使用 sort 方法给数组排序 arr.sort() console.log(arr) // [1, 2, 3]
数组常用方法 concat
是把多个数组进行拼接
+ 语法: 原始数组.concat(数1, 数2, 数据, ...) + 作用: 进行数组拼接, 把参数的所有数组或者数据, 拼接在原始数组身上 + 返回值: 拼接好的数组 + 和 push 的区别 => 改变原始数组 -> push 直接改变原始数组 -> concat 不会改变原始数组 => 插入数据 -> push 直接把数据插入 -> concat 如果遇到数组, 会把数组拆开, 把每一个数据依次插入
concat() var arr1 = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] var res = arr1.concat([500,'周瑜'],'诸葛亮',['铁拐李','黄忠']) document.write('原始数组',arr1,'<br>') document.write('拼接好的数组',res,'<br>') document.write('原始数组',arr1)
数组常用方法 join
是把数组里面的每一项内容链接起来,变成一个字符串
join() 数组=>字符串 + 语法: 数组.join('连接符') + 作用: 使用连接符, 把数组内的每一个数据连接成一个字符串(不写默认使用 逗号) + 返回值: 连接好的字符串
join() var arr1 = ['李白','安琪拉','猪八戒','韩信','李信','小乔','武则天'] var res = arr1.join('$') document.write('原始数组',arr1,'<br>') document.write('拼接好的字符串',res,typeof(res),'<br>') document.write('原始数组',arr1)
for和for in循环
-
因为数组的索引就可以获取数组中的内容
-
数组的索引又是按照 0 ~ n 顺序排列
-
我们就可以使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加
-
我们把这个行为叫做 遍历
var arr = [1, 2, 3, 4, 5] // 使用 for 循环遍历数组 for (var i = 0; i < arr.length; i++) { console.log(arr[i]) } // 会在控制台依次打印出 1, 2, 3, 4, 5
-
i < arr.length
因为 length 就是数组的长度,就是一个数字,所以我们可以直接用它来决定循环次数 -
console.log(arr[i])
因为随着循环,i 的值会从 0 开始依次增加 -
所以我们实际上就相当于在打印
arr[0]
/arr[1]
/ ...
-
-
因为 对象 是没有索引的,所以我们没有办法使用 for 循环来遍历
-
这里我们使用 for in 循环来遍历对象
-
先来看一段代码
var obj = { name: 'Jack', age: 18 } for (var key in obj) { console.log(key) } // 会在控制台打印两次内容,分别是 name 和 age
-
for in 循环的遍历是按照对象中有多少成员来决定了
-
有多少成员,就会执行多少次
-
key
是我们自己定义的一个变量,就和 for 循环的时候我们定义的 i 一个道理 -
在每次循环的过程中,key 就代表着对象中某一个成员的 属性名
-
数组的排序
冒泡排序
// 口诀 // 双层for 循环 一层少一次 // 里层减外层 变量相交换
var balls = [18,2,20,33,1,13] // 1 2 13 18 20 33 for(var i=0;i<balls.length-1;i++){ //趟数 for(var j=0;j<balls.length-1-i;j++){ //交换的次数 if(balls[j]>balls[j+1]){ var temp = balls[j]; balls[j] = balls[j+1]; balls[j+1] = temp; document.write(balls+'<br>') } } } console.log('交换完成以后',balls)