gpt4 book ai didi

javascript - 根据数组值打乱字符串 - Javascript

转载 作者:数据小太阳 更新时间:2023-10-29 06:04:05 25 4
gpt4 key购买 nike

试图解决this question在 Codewars 上。

我看过 other articles处理随机洗牌/加扰字符串。

但是根据给定数组中的值对字符串进行置乱呢?

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]));

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

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

我认为 slice 也行不通。

最佳答案

您可以创建一个单独的数组来存储字母。

var str = "abcd";
var arr = [0, 3, 2, 1];
function scramble(s, a) {
var ar = Array(a.length);
a.forEach((e, i) => {
ar[e] = s[i];
});
return ar.join('');
}
console.log(scramble(str, arr));

关于javascript - 根据数组值打乱字符串 - Javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56434883/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com