console.log(newArr1) //[ 1, 2, { a: 1, b: 2 } ]
//综上 省略参数 返回当前数组的浅拷贝
let obj1={a:1}
let obj2={b:2}
let arr = [1, 2, 3,obj1]
let newArr = arr.concat([1,2],obj2,100-1,‘合并数组’,undefined,null)
//数据类型如字符串,数字和布尔(不是String,Number 和 Boolean 对象):
//concat将字符串和数字的值复制到新数组中。
console.log(newArr)
[1,2,3,{ a: 1 },1,2,{ b: 2 },99,‘合并数组’, undefined,null]
obj1.b=3
obj2.a=4
/*
对象引用(而不是实际对象):concat将对象引用复制到新数组中。
原始数组和新数组都引用相同的对象。
也就是说,如果引用的对象被修改,则更改对于新数组和原始数组都是可见的。
这包括也是数组的数组参数的元素。
*/
console.log(newArr)
[1,2,3,{ a: 1, b: 3 },1,2,{ b: 2, a: 4 },99,‘合并数组’,undefined,null]
- 详解
concat方法创建一个新的数组,它由被调用的对象中的元素组成,每个参数的顺序依次是该参数的元素(如果参数是数组)或参数本身(如果参数不是数组)。它不会递归到嵌套数组参数中。
concat方法不会改变this或任何作为参数提供的数组,而是返回一个浅拷贝,它包含与原始数组相结合的相同元素的副本。 原始数组的元素将复制到新数组中,如下所示:
-
对象引用(而不是实际对象):concat将对象引用复制到新数组中。 原始数组和新数组都引用相同的对象。 也就是说,
如果引用的对象被修改,则更改对于新数组和原始数组都是可见的。 这包括也是数组的数组参数的元素。
-
数据类型如字符串,数字和布尔(不是String,Number 和 Boolean 对象):
concat将字符串和数字的值复制到新数组中
。
[](()slice()
slice()
方法返回一个新的数组对象
,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)
。原始数组不会被改变
。
返回值新的数组对象
参数 slice(begin,end)
第一个参数 begin
-
提取起始处的索引(从 0 开始),从该索引开始提取原数组元素。
-
如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。
-
如果省略 begin,则 slice 从索引 0 开始。
-
如果 begin 大于原数组的长度,则会返回空数组。
第二个参数 end
-
提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。
-
s 《大厂前端面试题解析+Web核心总结学习笔记+企业项目实战源码+最新高清讲解视频》无偿开源 徽信搜索公众号【编程进阶路】 lice(1,4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。
-
如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组 中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。
-
如果 end 被省略,则 slice 会一直提取到原数组末尾。
如果 end 大于数组的长度,slice 也会一直提取到原数组末尾。
let arr=[1,2,3,4,5]
//begin 参数
//1.
//如果省略 begin,则 slice 从索引 0 开始。
let newArr1=arr.slice()
console.log(newArr1) //[ 1, 2, 3, 4, 5 ]
//2.
//提取起始处的索引(从 0 开始),从该索引开始提取原数组元素
//如果 end 被省略,则 slice 会一直提取到原数组末尾。
let newArr2=arr.slice(1) //[ 2, 3, 4, 5 ]
console.log(newArr2)
//3.
//如果 begin 大于原数组的长度,则会返回空数组。
let newArr3=arr.slice(6)
console.log(newArr3) //[]
//4.
//如果该参数为负数,则表示从原数组中的倒数第几个元素开始提取
//slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)
let newArr4=arr.slice(-2)
console.log(newArr4) //[ 4, 5 ]
//end 参数
//1.
// 提取终止处的索引(从 0 开始),
// 在该索引处结束提取原数组元素。
// slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。
let newArr5=arr.slice(1,2)
console.log(newArr5) //[ 2 ]
//2.
// 如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。
// slice(-2,-1)