1.数组的创建
1.1字面量创建(常用)
var a = [3, 11, 8];
1.2 构造器
实际上 new Array === Array,加不加new 一点影响都没有。
var a = Array(); // []
创建一个数据的数组时出错。
var a = Array(3); // [undefined,undefined,undefined]
var a = Array(3,11,8); // [ 3,11,8 ]
1.3 ES6创建数组
定义:返回由所有参数值组成的数组,如果没有参数,就返回一个空数组。
目的:Array.of() 出现的目的是为了解决上述构造器因参数个数不同,导致的行为有差异的问题。
let a = Array.of(3, 11, 8); // [3,11,8]
let a = Array.of(3); // [3]
2.类数组转换为数组(Arrar.from())
定义:用于将两类对象转为真正的数组(不改变原对象,返回新的数组)。
参数:
第一个参数(必需):要转化为真正数组的对象。
第二个参数(可选): 类似数组的map方法,对每个元素进行处理,将处理后的值放入返回的数组。
第三个参数(可选): 用来绑定this。
// 1. 对象拥有length属性
let obj = {0: 'a', 1: 'b', 2:'c', length: 3};
let arr = Array.from(obj); // ['a','b','c'];
// 2. 部署了 Iterator接口的数据结构 比如:字符串、Set、NodeList对象 Iterator是一个接口,为各种不同的数据结构提供统一的访问机制,任何数据结构只要部署了Iterator接口,就可以完成遍历操作。
let arr = Array.from('hello'); // ['h','e','l','l']
let arr = Array.from(new Set(['a','b'])); // ['a','b'] 可以进行去重操作
3.改变原数组的方法(9个)
ES5:
a.pop()/ a.shift()/ a.push()/ a.unshift()/ a.reverse()/ a.splice()/ a.sort()
ES6:
a.copyWithin() / a.fill
ES5中:
3.1 pop()
作用:方法删除一个数组中的最后的一个元素,并且返回这个元素。
let a = [1,2,3];
let item = a.pop(); // 3
console.log(a); // [1,2]
3.2 shift()
作用:方法删除数组的第一个元素,并返回这个元素。
let a = [1,2,3];
let item = a.shift(); // 1
console.log(a); // [2,3]
3.3 push()
作用:方法可向数组的末尾添加一个或多个元素,并返回新的长度。
参数: item1, item2, …, itemX ,要添加到数组末尾的元素
let a = [1,2,3];
let item = a.push('末尾'); // 4
console.log(a); // [1,2,3,'末尾']
3.4 unshift()
作用:unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。
let a = [1,2,3];
let item = a.unshift('开头'); // 4
console.log(a); // ['开头',1,2,3]
3.5 reverse()
作用:reverse()方法用于颠倒数组中元素的顺序。
let a = [1,2,3];
a.reverse();
console.log(a); // [3,2,1]
3.6 splice()
作用:数组的删除、添加、替换,会改变原数组
3.6.1 删除
参数:一个或两个参数
(1)一个参数时:从下标为参数的位置开始删除,一直删除到最后
var arr = [1,2,3,4,5,6]
var n = arr.splice(1)
console.log(n)//[2,3,4,5,6]
console.log(arr)//[1]
(2)两个参数时:数组.splice(开始位置,删除的位数),当开始位置为负数时,从最后一位开始删除。
var arr = [1,2,3,4,5,6]
var n = arr.splice(1,1)//从1的位置开始删除,只删除1个
console.log(n)//[2]
console.log(arr)//[1,3,4,5,6]
console.log(arr)//[1]
3.6.2 添加和替换
参数:至少3个
可以向指定位置插入任意数量的值,只需要提供3个参数:起始位置、要删除的项数(单纯添加时,此项为0,替换时填写要替换的个数)、要插入的项。如果插入多个项,可以再传入任意多个项。
添加:数组.splice(start,0,数组项1,数组项2....)
var arr = [1,5,9]
arr.splice(1,0,4,6)//从1的位置添加4和6
console.log(arr)//[1,4,6,5,9]
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(a); // ['添加1','添加2',1,2,3,4,5,6,7]
//起始位置为负数时:
let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-1,0,'添加1','添加2'); // [] 没有删除元素,返回空数组
console.log(b); // [1,2,3,4,5,6,'添加1','添加2',7] 在最后一个元素的前面添加两个元素
替换:
var arr = [1,4,6,5,9]
arr.splice(1,2,7,8,7)//从1的位置开始,删除两个数组项,然后将7,8,7插入到这个位置
console.log(arr)//[1,7,8,7,5,9]
// 从数组下标0开始,删除3个元素,并添加元素'添加'
let a = [1, 2, 3, 4, 5, 6, 7];
let item = a.splice(0,3,'添加'); // [1,2,3]
console.log(a); // ['添加',4,5,6,7]
//起始位置为负数:
// 从数组最后第二个元素开始,删除3个元素,并添加两个元素'添加1'、'添加2'
let b = [1, 2, 3, 4, 5, 6, 7];
let item = b.splice(-2,3,'添加1','添加2'); // [6,7]
console.log(b); // [1,2,3,4,5,'添加1','添加2']
数组.splice(start,删除的位数,数组项1,数组项1....)
3.6.3总结
数组如果元素不够,会删除到最后一个元素为止
操作的元素,包括开始的那个元素
可以添加很多个元素
添加是在开始的元素前面添加的
3.7 sort()
作用:sort()方法对数组元素进行排序,并返回这个数组
参数可选: 规定排序顺序的比较函数。
默认情况下sort()方法没有传比较函数的话,默认按字母升序,如果不是元素不是字符串的话,会调用toString()方法将元素转化为字符串的Unicode(万国码)位点,然后再比较字符。
例:var arr = [5,8,7,4,2,11,3,9,6]
arr.sort()//[11,2,3,4,5,6,7,8,9]//默认按照字符串方法进行排序
3.7.1 自定义排序
var arr = [5,8,7,4,2,11,3,9,6]
arr.sort(function(a,b){//a,b分别代表相邻的两个数组元素
return a-b;//从小到大[2,3,4,5,6,7,8,9,11]
return b-a;//从大到小[11,9,8,7,6,5,4,3,2]
})
3.7.2 根据对象的某个属性进行排序
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}]
3.7.3 根据中文进行排序
var arr = [
{name:"武",num:"78"},
{name:"汤",num:"75"},
{name:"卢",num:"35"},
{name:"邓",num:"12"},
{name:"刘",num:"21"},
]
//以姓名排序
arr.sort(function(a,b){
return a.name.localeCompare(b.name,"zh")
})
//以num排序
arr.sort(function(a,b){
return a.num - b.num//从小到大
3.7.4 自定义比较函数
var array = [{name:'Koro1'},{name:'Koro1'},{name:'OB'},{name:'Koro1'},{name:'OB'},{name:'OB'}];
array.sort(function(a,b){
if(a.name === 'Koro1'){// 如果name是'Koro1' 返回-1 ,-1<0 a排在b的前面
return -1
}else{ // 如果不是的话,a排在b的后面
return 1
}
})
// [{"name":"Koro1"},{"name":"Koro1"},{"name":"Koro1"},{"name":"OB"},{"name":"OB"},{"name":"OB"}]
上述只总结了es5中的,es6的还在总结中需要的也可以自行查询
标签:总结,arr,元素,添加,let,数组,id From: https://www.cnblogs.com/DTCLOUD/p/17235181.html作者:刘晖