arrray相关随笔
### 数组系统复习
# 记得面试时候很多都喜欢问js基础的东西,问到最多的也就数组操作,工作中操作数据不过也就字符串、数组、json对象,今天借这个空闲时间再回顾一下数组相关的东西,其它两个有空再整理复习。
'参考链接:https://www.w3school.com.cn/jsref/jsref_obj_array.asp'
- 数组构造方法:
//作为内置对象,肯定可以直接new一个 new Array(); new Array(size); new Array(element0, element1, ..., elementn); //json对象转数组 必须写length并且格式也得必须这样 没什么卵用 let arrayLike = { 0: 'name', 1: 'age', 2: 'sex', 3: ['苹果','橘子','香蕉'], 'length': '4' } let arr = Array.from(arrayLike) console.log(arr) // ['name','age','sex',['苹果','橘子',香蕉']] //跟set相互转换 let arr = [12,45,97,9797,564,134,45642] let set = new Set(arr) console.log(Array.from(set)) // [ 12, 45, 97, 9797, 564, 134, 45642 ] //字符串转数组 let str = 'hello' let arr = Array.from(str) console.log(arr);//[h,e,l,l,o] //还有切割字符串成数组,那属于字符串里边的方法了
-Array对象的方法
//concat() 连接两个或更多的数组,并返回结果。 let arr1 = [1,2,3] let arr2 = [3,4,5] let arrs = arr1.concat(arr2) console.log(arr1)//[1,2,3] console.log(arr2)//[3,4,5] console.log(arrs)//[1,2,3,3,4,5]
//join() 把数组的所有元素放入一个字符串。元素通过指定的分隔符进行分隔。 let arr1 = [1,2,3] let str = arr1.join(',') console.log(str)//'1,2,3'
pop() 删除并返回数组的最后一个元素 let arr1 = [1,2,3] let str = arr1.pop() console.log(arr1)//[1,2] console.log(str)//3
//push() 向数组的末尾添加一个或更多元素,并返回新的长度。 let arr1 = [1,2,3] let str = arr1.push(6) console.log(arr1)//[1,2,3,6] console.log(str)//4
//reverse() 颠倒数组中元素的顺序。 //shift() 删除并返回数组的第一个元素 let arr1 = [1,2,3] let str = arr1.shift() console.log(arr1)//[2,3] console.log(str)//1 /*slice() 从某个已有的数组返回选定的元素 arrayObject.slice(start,end) start:必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。 end:可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。 */ let arr1 = [1,2,3,4,5,6,7,8,9] let str = arr1.slice(1) console.log(arr1)//[1,2,3,4,5,6,7,8,9] console.log(str)//[2,3,4,5,6,7,8,9] let str2 = arr1.slice(1,4) console.log(arr1)//[1,2,3,4,5,6,7,8,9] console.log(str2)//[2,3,4]//老规矩 包头不包尾 let str3 = arr1.slice(-5,-1) console.log(arr1)//[1,2,3,4,5,6,7,8,9] console.log(str3)//[5,6,7,8]//老规矩 包头不包尾
//sort() 对数组的元素进行排序 可接收一个参数,参数必须是函数 let arr1 = [6,2,3,'a',2,'z','r'] let str = arr1.sort() console.log(arr1)//[2, 2, 3, 6, "a", "r", "z"] console.log(str)//[2, 2, 3, 6, "a", "r", "z"]
//splice() 向/从数组中添加/删除项目,然后返回被删除的项目。 //语法:arrayObject.splice(index,howmany,item1,.....,itemX) //index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 //howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 //item1, ..., itemX 可选。向数组添加的新项目。 //返回Array 包含被删除项目的新数组,如果有的话。 //1.指定位置插入元素 var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") arr.splice(2,0,"William") document.write(arr + "<br />") //George,John,Thomas,James,Adrew,Martin //George,John,William,Thomas,James,Adrew,Martin //在第二个元素后边插入‘William’ //2.替换第二个元素 var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") arr.splice(2,1,"William") document.write(arr + "<br />") //George,John,Thomas,James,Adrew,Martin //George,John,William,James,Adrew,Martin //可见 ‘Thomas’被替换为‘William’ //3.再看一个 然后总结一下 var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") arr.splice(2,3,"William") document.write(arr) //George,John,Thomas,James,Adrew,Martin //George,John,William,Martin //可见 ‘Thomas,James,Adrew’被删除 替换成了‘William’ //来总结一下 第一个参数就是指定咱从哪里开始整,第二个参数就是 要干掉几个 ,第三个参数就是干掉后在这插入什么 //arg1我试了下 不能用负数,写个负数就相当于写了个0;第二个也一样;那第三个参数能写个数组放进去吗?答案是yes var arr = new Array(6) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" arr[3] = "James" arr[4] = "Adrew" arr[5] = "Martin" document.write(arr + "<br />") arr.splice(2,3,["William","jeck"]) document.write(arr + "<br />") //George,John,Thomas,James,Adrew,Martin //George,John,William,jeck,Martin ////===请注意,splice() 方法与 slice() 方法的作用是不同的,splice() 方法会直接对数组进行修改
//toString() 方法可把数组转换为字符串,并返回结果。 //返回值与没有参数的 join() 方法返回的字符串相同。 var arr = new Array(3) arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr.toString()) //George,John,Thomas
//unshift() 方法可向数组的开头添加一个或更多元素,并返回新的长度。 var arr = new Array() arr[0] = "George" arr[1] = "John" arr[2] = "Thomas" document.write(arr + "<br />") document.write(arr.unshift("William") + "<br />") document.write(arr) George,John,Thomas 4 William,George,John,Thomas
这就是数组常用的方法,基础的东西时不时的复习一下掌握牢固了,还是很重要的;以后再想到关于数组的用法在更新。
es6新增了不少有用的属性方法
1.扩展运算符,就是三个点点 ...
console.log(1, ...[2, 3, 4], 5) // 1 2 3 4 5
//用法
function push(array, ...items) {
array.push(...items);
}
function add(x, y) {
return x + y;
}
const numbers = [4, 38];
add(...numbers) // 42
2.复制数组
let arr = [1,2,3] let brr = arr arr[0] = 4 console.log(brr)//[4,2,3] //这是因为arr赋值给brr只是指针指向了那个数组,更改后其实brr和arr指向的还是同一个数组,就是说这样复制后在内存中还是一个数组,只不过是两个名字而已 let a = [1,2,3] let b = [...a] a[0] = 4 console.log(b)//[1,2,3] //这样就相当于重新建一个数组,并给他赋值为 1,2,3;这时候再改变a数组就和b数组没啥关系了;
3.合并数组
let {a,b,c} = {a:[1,2],b:[3,4],c:[5,6]} //es5时候得用concat方法 //用es6怎么写呢 let d = [...a,...b,...c] //这样就ok了
4.Array.fo(arg)//将一组值转化为数组 是用来替代 new Array()的
5.copyWithin复制数组指定位置的元素 第一个参数必传
copyWithin(target, start = 0, end = this.length)
6.数组的find() 和 findIndex() 方法
[1, 5, 10, 15].find(function(value, index, arr) { return value > 9; }) // 10 [1, 5, 10, 15].findIndex(function(value, index, arr) { return value > 9; }) // 2
7.数组的fill()方法,用指定的元素填充数组,多用于初始化数组
['a', 'b', 'c'].fill(7, 1, 2)//用7填充 填充开始位置为1结束位置为2 // ['a', 7, 'c']
8.数组的keys() values() entries()方法 遍历时候就省事多了
9.数组的includes()方法 判断数组是否包含某个元素
10.数组的 flat() faltMap()方法 第一个是拉平数组 第二个是拉平时候执行一下map函数