【发布时间】:2019-06-03 21:43:13
【问题描述】:
试图解决 Codewars 上的this question。
我见过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 也不会起作用。
【问题讨论】:
-
你的问题不一致;你问如何从影响数组的数组中删除一些东西。答案是“你不能”——这就是“移除”的定义。如果您只想获取特定索引处的字符,这就是
slice的用途... -
如果您提供的数组长度与字符串不同,会发生什么情况?或者这永远不会发生?
-
@zfrisch 根据编码挑战,这不会发生。
标签: javascript arrays string