数组,是对象,关注索引,效率比 {}形式的对象高
var arr = [1,2,3];
arr[arr.length] = 4; //向数组末尾加上一个元素
console.log(arr); //1,2,3,4
var arr = [1, 2, 3];
arr[arr.length] = 4; //数组末尾加一个元素4
console.log(arr); //[1,2,3,4]
// 添加两个元素
console.log(arr.push(11,22)); //返回值,数组长度为6
console.log(arr); //[1,2,3,4,11,22]
console.log(arr.pop()); // 22
console.log(arr); //[1,2,3,4,11]
数组方法:
arr.push(); 该方法向数组末尾添加一个或多个元素,返回新的数组长度
arr.pop(); 该方法从数组末尾删除一个元素,返回删除的元素
arr.unshift();该方法向数组头部添加一个或多个元素,返回新的数组长度
arr.shift();该方法从数组头部删除一个元素,返回删除的元素
for循环遍历数组
for(var i = 0;i<arr.length;i++){
console.log(arr[i])
}
由我们创建,但不由我们调用的函数叫回调函数 forEach(function(){})
filter,map,reduce
**forEach()方法(ie8以下不支持)**
arr.forEach(function(val,index,arr){
console.log(val,index,arr)
})
**三个参数,值,索引,对象**
//取出数组中小于100的元素,扩大2倍(乘以2),求出它们的和
let arr = [10,40,50,102,200,60];
let totel = arr.filter(function(value){
return value <100;
}).map(function(value){
return value * 2
}).reduce(function(pre,cur){
return pre + cur
},0)
**slice()方法截取数组中元素,不改变原数组,返回截取的数组**
arr.slice(start,end);
**包含start(索引)不包含end**
**没有end,默认截取到最后**
**end为负,则从后往前,-1最后一个的索引,(1,-1)截取1到最后一个之间的元素**
**splice()方法删除/替换/添加数组中元素,会改变原数组,返回删除的数组**
arr.splice(参数1,参数2,参数3);
参数一:从第几个元素开始
参数二:删除几个元素
参数三:在参数一的后面位置插入元素
Set()数组去重 Array.from(new Set(arr))
arr1.concat(arr2,888),把数组arr1和arr2,888 合并,返回新数组,不改变原数组
arr.join(); 数组转字符串,不改变原数组
arr.reserve(); 翻转数组,改变原数组
arr.sort();对数组排序,按Unicode编码排序,数字排序也可能混乱,比如11和2,会改变原数组
**如下可以升序排序**
var arr = [3,2,6,8,0,2,1];
arr.sort(function(a,b){
return a-b; //升序排序
//return b-a; //降序排序
})
console.log(arr)
**判断是否为数组四种方法**
let a = [1,2,3]
console.log(Array.isArray(a));
console.log(a instanceof Array); //true 或 false
console.log(a.constructor === Array); //true
console.log(Object.prototype.toString.call(a) === '[object Array]');//true