【JavaScript】26_数组的方法,对象的复制与数组的复制

时间:2023-02-23 16:24:33

4、数组的方法

​https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array​

Array.isArray()

  • 用来检查一个对象是否是数组

at()

  • 可以根据索引获取数组中的指定元素
  • at可以接收负索引作为参数

concat()

  • 用来连接两个或多个数组
  • 非破坏性方法,不会影响原数组,而是返回一个新的数组
<script>
console.log(Array.isArray({name:'孙悟空'}))//false
console.log(Array.isArray([1,2,3]))//true

const arr = ['孙悟空','猪八戒','沙和尚','唐僧','白骨精']
console.log(arr.at(-2))//负数是从-1开始的,就是倒数第二个
console.log(arr[arr.length-2])//两者相同

const arr2 = ['白骨精','蜘蛛精','玉兔精']
let result = arr.concat(arr2,['牛魔王的','铁扇公主'])
console.log(result)//相当于是合并了arr和arr2两个数组,顺便添加了两个值
</script>

5、对象的复制

indexOf()

- 获取元素在数组中第一次出现的索引
- 参数:
1. 要查询的元素
2. 查询的起始位置

lastIndexOf()

- 获取元素在数组中最后一次出现的位置

- 返回值:

找到了则返回元素的索引, 没有找到返回-1

join()

- 将一个数组中的元素连接为一个字符串
- ["孙悟空", "猪八戒", "沙和尚", "唐僧", "沙和尚"] -> "孙悟空,猪八戒,沙和尚,唐僧,沙和尚"
- 参数:
指定一个字符串作为连接符

slice()

- 用来截取数组(非破坏性方法)     
- 参数:
1. 截取的起始位置(包括该位置)
2. 截取的结束位置(不包括该位置)
- 第二个参数可以省略不写,如果省略则会一直截取到最后
- 索引可以是负值

如果将两个参数全都省略,则可以对数组进行浅拷贝(浅复制)
<script>
let arr = ['孙悟空','猪八戒','沙和尚','唐僧','沙和尚']

let result = arr.indexOf('沙和尚',3)//4,起始位置从位置3开始的(下标为2),所以最后找到的是下标为4的
result = arr.lastIndexOf("沙和尚",3)//2,倒着找的,最后一次出现的位置为下标为2的地方
result = arr.indexOf("白骨精")

result = arr.join()//转换成字符串
result = arr.join("@_@")
result = arr.join("")//完全连接在一起了,没有逗号啥的

arr = ['孙悟空','猪八戒','沙和尚','唐僧']
result = arr.slice(0,2)
result = arr.slice(1,3)
result = arr.slice(1,-1)//到倒数第一个为止,所以只能取到倒数第二个沙和尚那
console.log(result)
</script>

6、数组的复制

如何去复制一个对象 复制必须要产生新的对象

当调用slice时,会产生一个新的数组对象,从而完成对数组的复制

<script>
const arr = ["孙悟空", "猪八戒", "沙和尚"]
// const arr2 = arr // 不是复制
// arr2[0] = "唐僧"

const arr3 = arr.slice()
// console.log(arr === arr2)
// console.log(arr2)

arr3[0] = "唐僧"
console.log(arr)
console.log(arr3)
</script>