freeCodeCamp/guide/chinese/certifications/javascript-algorithms-and-d.../basic-algorithm-scripting/slice-and-splice/index.md

4.4 KiB
Raw Blame History

title localeTitle
Slice and Splice 切片和拼接

切片和拼接

:triangular_flag_on_post:如果卡住,请记得使用**Read-Search-Ask** 。尝试配对程序:busts_in_silhouette:并编写自己的代码:pencil:

:checkered_flag:问题说明:

我们需要将第一个数组中的每个元素从索引n开始复制到第二个数组中。我们还必须确保原始数组不会发生变异。也就是说我们无法对原始数组进行任何更改。

相关链接

:speech_balloon:提示1

在函数内部创建第二个数组的副本。这将确保原始数组不会发生变异。这可以通过在第二个数组上使用切片操作来完成,并将其分配给变量。

现在尝试解决问题

:speech_balloon:提示2

遍历第一个数组中的所有项目。对于第一个数组中的每个项,将其拼接到作为参数给出的索引中的复制数组中。

现在尝试解决问题

:speech_balloon:提示3

执行拼接后增加索引。

现在尝试解决问题

扰流警报!

警告牌

提前解决!

:beginner:基本代码解决方案

function frankenSplice(arr1, arr2, n) { 
  // It's alive. It's alive! 
  let localArray = arr2.slice(); 
  for (let i = 0; i < arr1.length; i++) { 
    localArray.splice(n, 0, arr1[i]); 
    n++; 
  } 
  return localArray; 
 } 

:rocket: 运行代码

代码说明:

  • 我们的目标是从arr1获取所有元素,并从索引位置n开始将它们插入到arr2 。同时我们必须确保arrarr2都没有变异。

  • 使用slice()函数,我们可以创建arr2的精确副本,并将操作的结果分配给变量localArray

  • 现在我们有了一个可以变异的数组,我们可以迭代第一个数组中的每个项目。对于第一个数组中的每个项目,我们可以使用splice()函数将项目插入localArray索引n中。

  • 我们将索引n递增1。这将确保arr1中的每个项都插入到正确索引位置的localArray中。

  • 最后,我们返回localArray并结束该函数。

:clipboard:捐款说明:

  • :warning: 请勿添加与任何现有解决方案类似的解决方案。如果您认为它**相似但更好** ,那么尝试合并(或替换)现有的类似解决方案。
  • 添加解决方案的说明。
  • 将解决方案分为以下类别之一 - 基本 中级高级:traffic_light:
  • 如果您添加了任何**相关的主要内容,**请仅添加您的用户名。 :warning: 不要 删除任何现有的用户名

看到:point_right: Wiki Challenge Solution Template供参考。