slice
该方法有两个可选参数start
, 和end
。如果您愿意,您可以同时提供两者、仅提供start
或都不提供 - 所以所有这些都是有效的:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(2, 3); // [ '🔑' ]
let arrayTwo = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayTwoSlice = arrayTwo.slice(2); // [ '🔑', '🔩' ]
let arrayThree = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayThreeSlice = arrayThree.slice(); // [ '⚡️', '🔎', '🔑', '🔩' ]
复制代码
开始
这是要包含在新数组中的第一项的索引。例如,如果设置为2
,slice
则将在索引 2 处开始新的数组副本。如果使用负数,则表示距序列末尾的偏移量。例如:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(-2); // [ '🔑', '🔩' ]
let arrayOneSliceAgain = arrayOne.slice(-1); // [ '🔩' ]
复制代码
结尾
这是从切片数组中排除的第一个元素- 这有点令人困惑。您可能希望end
表示要包含的最后一项 - 但它是要排除的第一项。如果你使用,请记住这一点slice
!如果省略此参数,则该slice
方法将简单地继续到数组的末尾,如下例所示:
let arrayTwo = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayTwoSlice = myArray.slice(2); // [ '🔑', '🔩' ]
复制代码
如果使用了大于数组长度的值,slice
则只延续到数组的末尾。如果使用负值,则表示距数组末尾的偏移量。例如,(2, -1)
将从数组的开头开始为 2,从数组的结尾开始为 -1:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(2, -1); // [ '🔑' ]
let arrayOneSliceAgain = arrayOne.slice(1, -1); // [ '🔎', '🔑' ]
复制代码
使用切片制作数组的副本
Slice不会改变原始数组。相反,它会创建一个新的浅拷贝。因此,您现有的数组仍将继续包含相同的值:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice(2, 3);
console.log(arrayOne); // [ '⚡️', '🔎', '🔑', '🔩' ]
console.log(arrayOneSlice); // [ '🔑' ]
复制代码
由于slice
制作了数组的浅拷贝,它有时也用于复制和制作数组数据的副本。例如,一个空slice
函数也会在内存中创建一个新数组 - 允许您在内存中拥有相同数组的两个副本且具有相同的引用:
let arrayOne = [ '⚡️', '🔎', '🔑', '🔩' ];
let arrayOneSlice = arrayOne.slice();
arrayOneSlice[2] = '⚡️'
console.log(arrayOne); // [ '⚡️', '🔎', '🔑', '🔩' ]
console.log(arrayOneSlice); // [ '⚡️', '🔎', '⚡️', '🔩' ]
复制代码
这在某些情况下可能很有用。但是,slice
只制作数组的浅拷贝。这意味着当您的数组中有对象时,事情会变得有些混乱。考虑以下数组:
let arrayOne = [ { items: [ '⚡️', '🔎', '🔑', '🔩' ]}, '👨💻', '😄', '🐔' ]
复制代码
该数组中包含一个对象。让我们尝试制作这个数组的切片副本,然后更新items
:
最后
中年危机是真实存在的,即便有技术傍身,还是难免对自己的生存能力产生质疑和焦虑,这些年职业发展,一直在寻求消除焦虑的依靠。
-
技术要深入到什么程度?
-
做久了技术总要转型管理?
-
我能做什么,我想做什么?
-
一技之长,就是深耕你的专业技能,你的专业技术。(重点)
-
独立做事,当你的一技之长达到一定深度的时候,需要开始思考如何独立做事。(创业)
-
拥有事业,选择一份使命,带领团队实现它。(创业)
一技之长分五个层次
-
栈内技术 - 是指你的前端专业领域技术
-
栈外技术 - 是指栈内技术的上下游,领域外的相关专业知识
-
工程经验 - 是建设专业技术体系的“解决方案”
-
带人做事 - 是对团队协作能力的要求
-
业界发声 - 工作经验总结对外分享,与他人交流
永远不要放弃一技之长,它值得你长期
信仰持有
。
开源分享:【大厂前端面试题解析+核心总结学习笔记+真实项目实战+最新讲解视频】
主要内容包括html,css,html5,css3,JavaScript,正则表达式,函数,BOM,DOM,jQuery,AJAX,vue 等等。