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函数

 




原文地址:https://www.cnblogs.com/rainbowLover/p/12792766.html