定义数组及数组方法小结
- 定义数组的方法
1、对象表达式
var arr1 = new Array()
console.log(arr1)
2、字面量表达式
var arr2 = []
console.log(arr2)
var arr = ["one","two"]
console.log(arr)
var arr1 = ["one","two",10] //对数据类型要求不严格
3、字面量的特殊写法 用逗号隔开 但是没有值2.值是wmpty
// 稀疏数组 sparse array、
var arr1 = [,,,4, ,,,,10,20]
console.log(arr1)
console.log(length) //empty 会占位置
- 数组的方法
push()在末尾添加 , 返回值是数组的长度
var arr = [1,2,3]
arr.push(4)
arr.push(5,6) //输出1,2,3,4,5
console.log(arr)
pop() 末尾删除 , 返回值是被删除元素的值
push 和pop 可以模拟栈的数据结构 -FILO=frist in last out 先进后出
FILO=frist in frist out 先进先出
var arr = [1,2,3]
arr.pup() //[1,2]
console.log(arr)
unshift() 首位添加 返回值为操作后的数组长度
var arr = [1,2.3]
var a = arr.unshift() // 数组最前面添加
console.log(a)
console.log(arr)
shift() 首位删除 返回值为删除的值
var arr = [1,2.3]
var a = arr.shift() // 数组最前面删除
console.log(a)
console.log(arr)
splice() 对数组进行增删改 当作为删除或替换或增加时 返回值是被删除的值的数组(当为增加时删除的值为空)
var arr = [1,2.3]
console.log(arr)
arr.splice(1,1) // 删除下标为1的数组,数量为1个
arr.splice(1,0,10) //从下标为1 的地方新增一个元素10
arr.splice(1,1,10) //添加下标为1的元素
delete 删除对象属性
//在对象中使用
var ojb = {
age:18,
name::"luck"
}
console.log(obj)
delete obj.age
console.log(obj)
//在数组中使用delete
var arr = [1,2.3]
console.log(arr)
delete.arr[0] //输出empty,2,3 //可以删除元素,但是位置会保留
console.log(arr)
reverse() 倒序排列,颠倒顺序
var arr = [1,2.3]
console.log(arr)
arr.reverse() //输出3,2,1
sort() 排序
var arr = [1,5.3]
console.log(arr)
arr.sort() //输出1,3,5 //如果是数字则默认由小到大排序
var arr2 = [1,15,8,2,"a","b"]
console.log(arr2)
arr2.sort() // 输出[1, 15, 2, 8, "a", "b"] //如果是字符就按字符方法编码排序,两位数的数字按照第一位进行排序
// 比较函数 用于排序 返回值:- , +, 0
var arr = [1,4,6,3]
console.log(arr)
arr.sort(function (a,b){
return b - a //a - b升序, b - a降序
})
console.log(arr)
//对象排序
var students = [
{
naem:"吴姐",
score:10,
},
{
naem:"吴哥",
score:30,
},
{
naem:"小吴",
score:2,
},
];
console.log(students)
students.sort(function(a,b){
return a.score - b.score;
})
console.log(students)
//按照对象中成绩进行排序
比较字符串
var students = [
{
naem:"A姐",
score:10,
},
{
naem:"B哥",
score:30,
},
{
naem:"X吴",
score:2,
},
];
onsole.log(students)
studentstring.sort(function(a,b){
//return a.name - b.name; //不行 不能对比字符串,因为比较函数只认 - + 0
var x = a.name.toLOwerCase()
//转换成小写
var y = b.name.toLOwerCase()
//转换成小写
if(x < y){
return -1
}
if(x > y){
retuen 1
}
return 0
})
console.log(students)
max()min()查找数组的最大值和最小值
var arr = [1,2,3]
function show(arr){
// return Math.max.apply(this,arr) //最大值
return Math.min.apply(this,arr)
//最小值
}
console.log(show(arr))
indexOf() 查找指定字符串的位置
var arr = ["one","ha","ii"]
console.log(arr.indexOf("ii")) //2 找到返回下标
console.log(arr.indexOf("qqqq")) //-1 找不到返回-1
console.log(arr.indexOf("ii")) //
lastIndexOf() 查找指定字符串最后一次的位置
var arr = ["one","ha","ii"]
console.log(arr.lastIndexOf("ii"))
//查找元素最后一次出现的位置从后往前找
concat() 数组拼接
var arr1 = [1,3,2,4]
var arr2 = [1,9,0,7]
//low方法
//arr1[3] = arr[6]
//console.log(arr1)
var arr3 = arr1.concat(arr2) //数组拼接,返回新的数组,不改变原来的数组
console.log(arr1)
console.log(arr3)
join() 把数组元素转换成字符串 (以指定字符分割字符串)
var arr1 = [1,2,3]
var arr2 = arr1.join() //数组转字符串 返回新的数组
console.log(arr1)
console.log(arr2) //默认逗号分隔
toString()
var arr1 = [1,2,3]
var arr2 = arr1.toString()
console.log(arr2) //输出1,2,3
var num = 255
console.log(num.toString(10)) //默认10进制
console.log(num.toString(16)) //16进制
slice() 截取指定位置数组的值 参数第一个值为起始坐标 第二个值为结束坐标 不包含结束位置
var arr1 = [1,2,3]
console.log(arr1)
var arr2 = arr1.slice(1,2)
console.log(arr2)
判断是否是数组
var arr1 = [1,2,3]
console.log(Array.isArray(arr1))
findIndex()
var arr = [18,19,13,1,12,4,56]
var result = arr.findIndex(function(val.index){
if(val >= 18 && index > 3){
return val
}
})
console.log(result)
// 输出下标6 //返回的是第一个满足条件的下标