最初的回答
使用 reduce
函数对数组进行迭代,当迭代时将字符串(s
)中迭代器索引(i
)的字符赋值给新数组(ra
)中的值索引(v
)。在完成 reduce
后,使用 join
将返回的数组(ra
)转换回字符串。
let scramble = (s, a) => a.reduce((ra,v,i)=> (ra[v] = s[i], ra), []).join("");
Example:
let scramble = (s, a) => a.reduce((ra,v,i)=> (ra[v] = s[i], ra), []).join("");
console.log( scramble("abcd", [0,3,2,1]) );
澄清代码:
我意识到以上代码可能很难理解。让我为您提供相同的功能,但使用标准函数。请记住,这正是发生在上面代码中的事情,但如果您不习惯ES6的简洁性,则可能更容易理解:
最初的回答
function scramble(my_string, my_array) {
// create an array to return
let returnable_array = [];
// loop through the provided array.
// string index is the array key: 0,1,2,3
// array_index is the value of the array keys: 0,3,2,1
for(let [string_index, array_index] of my_array.entries()) {
// we assign the character at string index
// to the value index inside the returnable array
returnable_array[array_index] = my_string[string_index];
}
// we turn the array into a string
let returnable_string = returnable_array.join("");
// we return the string
return returnable_string
}
Example:
function scramble(my_string, my_array) {
let returnable_array = [];
for(let [string_index, array_index] of my_array.entries()) {
returnable_array[array_index] = my_string[string_index];
}
returnable_string = returnable_array.join("");
return returnable_string
}
console.log(scramble("abcd", [0,3,1,2]));
slice
方法... - Heretic Monkey