数组的定义
new Array(length/content) 字面量[]
数组的读和写
arr[num]不可以溢出读结果undefined
arr[num] = xxx//可以溢出写
数组的常用的方法
改变原数组(就这几个改变原数组)
push()
pop(剪切)不传参,从后面一位一位剪切
shift(前面剪切)
unshift(前面增加)
reverse 逆序
splice(从第几位开始,截取多少长度,在切口处添加新数据,鼠标在前面)
示例:
var arr = [1, 2, 3, 5]
arr.splice(3, 0, 4) //[1,2,3,4,5]
负数的时候(原理)
splice = function(pos) {
pos += pos > 0 ? 0 : this.length;
}
sort() --> 按Ascall码排
按照大小排序
- 必须写两形参
- 看返回值
-当返回值为负数,那么前面数放在签名
-为正数,那么后面数在钱
-为0 不动
var arr = [1, 3,.5]
arr,sort(function(a, b){
return a - b;
})
乱序:
arr sort(function (a, b){
return Math.random() - 0.5
} )
不改变数组
1.concat(连接数组)
2.slice(从该位开始,截取到该位)
3.join(按什么(按什么连)
var arr = [1,3 ,4,5];
arr.join('-')//"1-3-4-5"
4.split:按什么拆
var test = "1 - 3 - 4 - 5"
test.split("4") // 将字符串变成数组
类数组(对象)
1.可以利用属性名模拟数组的特性
2.可以动态的增长length属性
3.如果强行让类数组调用push方法,则会根据length属性值的位置进行属性的扩充
var obj = {
'0' : 'a',
'1' : b',
'2' : 'c',
'length' : 3,
'push' : Array.prototype.push,
'splice' : :Array.prototype.splice // 变成数组的形式
}
//属性要为索引(数字)属性,必须有length属性,最好加上push
方法的拓展
- indexof() // 返回索引值 不存在返回-1
- lastIndexOf() // 最后一次出现的位置
- every() some() // 通过判断返回布尔值
- forEach()
- filter() --> 要有return值
- map()—>要有return值
- reduce()
var arr = [1, 34, 43, 56, 3]
var result = arr.reduce(function(init, next, index) {
return init + next
}, 100)
console.log(result)