创建数组
- 字面量创建 var a = [1,2,3];
- 构造器创建 new Array === Array
- var a = new Array(1,2.3,5);
- ES6新增
- Array.of(12,45,1)返回所有参数值组成的数组
- Array from ("转化为数组的对象") 将两类对象(有length的,接口数据)转化为真正的数组,返回新数组;
改变原数组的方法
- arr.splice(“操作位索”,“删除个数”,“添加元素”...)添加/删除数组元素 返回被删除的项目 索引为负从后计数
var a = new Array(1,2,3,4,'李白') console.log(a);//[1, 2, 3, 4, "李白"] var b = a.splice(-2,2,'露娜','不知火舞'); console.log(b); // [4, "李白"] console.log(a); //[1, 2, 3, "露娜", "不知火舞"]
- arr.sort()
var a1 = [2,1,3,5,4,8,9]
a1.sort(function(a,b){
return a-b //小到大
return b-a //大到小
})
console.log(a1);
//多条件排序
var array = [{id:10,age:2},{id:5,age:4},{id:6,age:10},{id:9,age:6},{id:2,age:8},{id:10,age:9}];
array.sort(function(a,b){
if(a.id === b.id){// 如果id的值相等,按照age的值降序
return b.age - a.age
}else{ // 如果id的值不相等,按照id的值升序
return a.id - b.id
}
})
// [{"id":2,"age":8},{"id":5,"age":4},{"id":6,"age":10},{"id":9,"age":6},{"id":10,"age":9},{"id":10,"age":2}]
- arr.pop()删除最后一个元素
- arr.shift()删除第一个元素
- arr.push()追加元素(从最后)
- arr.unshift()添加元素(从开头)
- arr.reverse()翻转数组
- arr.copyWithin(target,start,end)从 targe t开始替换 start 到 end 的元素 数组长度不变
- arr.fill(“填充值”,star,end)填充数组
不改变原数组的方法
- slice(start,end) 浅拷贝,返回新数组
- join(“指定分隔符默认逗号”)分隔数组返回字符串
- toString()数组转为以逗号连接的字符串
- cancat()连接数组 a.cancat(arr1,arr2,“具体值”)
- ES6新增 ...扩展运算符 b[1,2,...arr1,3] 功能同cancat()
- indexof()查找指定元素第一个位置返回索引 没有返回值为=== -1 不能识别NaN,
- lastIndexof()查找指定元素最后一个位置返回索引 没有返回值为=== -1 不
- includes(“指定元素”)新增查找是否存在指定元素 返回布尔值 可以识别NaN
遍历数组的方法
- arr.forEach()
let a = [1, 2, , 3]; // 最后第二个元素是空的,不会遍历(undefined、null会遍历)
let obj = {
name: 'OBKoro1'
};
let result = a.forEach(function (value, index, array) {
a[3] = '改变元素';
a.push('添加到尾端,不会被遍历')
console.log(value, 'forEach传递的第一个参数'); // 分别打印 1 ,2 ,改变元素
console.log(this.name); // OBKoro1 打印三次 this绑定在obj对象上
// break; // break会报错
return value; // return只能结束本次回调 会执行下次回调
console.log('不会执行,因为return 会执行下一次循环回调')
}, obj);
console.log(result); // 即使return了一个值,也还是返回undefined
// 回调函数也接受箭头函数写法
- arr.every()检测是否所有元素都符合条件 返回布尔值
[12, 5, 8, 130, 44].every(x => x >= 10); // false
- arr.some()检测是否有元素都符合条件 只要有一个满足就返回true并结束
- arr.filter()过滤,返回新数组
- arr.map()返回每个元素处理后组成的新数组
let a = ['1', '2', '3', '4'];
let result = a.map(function (value, index, array) {
return value + '新数组的新元素'
});
console.log(result, a);
// ["1新数组的新元素","2新数组的新元素","3新数组的新元素","4新数组的新元素"] ["1","2","3","4"]
- arr.raduce()累加合并
// 数组求和
let sum = [0, 1, 2, 3].reduce(function (a, b) {
return a + b;
}, 0);
// 6
// 将二维数组转化为一维 将数组元素展开
let flattened = [[0, 1],[2, 3],[4, 5]].reduce(
(a, b) => a.concat(b),
[]
);
// [0, 1, 2, 3, 4, 5]
- array.keys() 遍历键名
- array.values() 遍历键值
- array.entries() 遍历键名+键值