可以在 splice 中使用浅复制变量吗?

问题描述 投票:0回答:1

对这个糟糕的标题表示歉意,我不知道还能用什么词来形容。 这是我试图在 codeWars 中完成的一个类型。无人机飞过。 基本上,灯参数将是一串“x”字符,并从第零个索引开始,根据无人机的长度将它们替换为“o”。

function flyBy(lamps, drone){
  let arr = [...lamps];
  let dl = drone.length;

  console.log(arr,dl,drone)
  // shows ['x', 'x', 'x', 'x', 'x', 'x' ] 5 '====T'
  
  let answer = arr.splice(0, dl, 'o').join('');
  
    console.log(answer)
  //shows xxxxx
  

据我所知,splice 的第一个参数是起始索引,第二个参数是要删除的元素数量,第三个(或更多)参数是要插入的元素。我尝试阅读 Mozilla,但我不明白为什么这行不通。我很感激这并不能解决型,但我期待着牛。这与使用扩展运算符的 arr 变量有什么关系吗?我的理解是,这创建了原始字符串的数组文字浅副本,我可以将其应用拼接并将其连接('')回字符串中。

我很感激将会有更有效和更干净的方法来解决 kata,但我更感兴趣的是为什么这不会返回 ox。

javascript arrays splice spread-syntax
1个回答
1
投票

来自文档

返回值

包含已删除元素的数组。 如果仅删除一个元素,则返回一个包含一个元素的数组。 如果没有删除任何元素,则返回一个空数组。

splice
返回被删除的内容。在本例中,您删除了 5 个 x,这就是您获得
xxxxx
作为回报的原因。您应该致电
splice
,然后在
join
上拨打
arr

arr.splice(0, dl, 'o');

let answer = arr.join('');

console.log(answer); // 'ox'
© www.soinside.com 2019 - 2024. All rights reserved.