根据数组值对字符串进行加扰-Javascript

Hap*_*s31 5 javascript arrays string

试图在Codewars上解决这个问题

我看过其他文章这些文章随机地对字符串进行混洗/加扰。

但是如何根据给定数组中的值对字符串进行加扰呢?

abcd给定的数组[0, 3, 2, 1]将成为acdb因为:

  • a 移至索引 0
  • b 移至索引 3
  • c 移至索引 2
  • d 移至索引 1

我的猜测是首先将字符串拆分为一个数组。然后,我们要获取传递到scramble函数中的数组的索引值,并将该索引值处的字符从该数组推入新数组。最后加入数组:

function scramble(str, arr) {

  let newArray = str.split("");
  let finalArray = [];

  for (let i = 0; i < str.length; i++) {
    console.log(newArray);
    finalArray.push(newArray.splice(arr[i], 1));
  }
  return finalArray;
}

console.log(scramble("abcd", [0, 3, 1, 2]));
Run Code Online (Sandbox Code Playgroud)

但是这种逻辑的问题是每次都会.splice()删除字符newArray

是否有另一种方法可以删除指定索引处的字符而不修改原始数组?

我认为切片也不会起作用。

obs*_*ure 1

您可以循环输入字符串,使用string.charAt(position)获取当前位置的字符,并将其放入新数组中,并放入从 Positions 数组检索的位置。

function scramble (str, arr) {
let newArray = [];
for (let i = 0; i < str.length; i++) {
    newArray[arr[i]]=str.charAt(i);
  }
  return newArray.join();
}

console.log(scramble("abcd", [0, 3, 1, 2]));
Run Code Online (Sandbox Code Playgroud)