Ответ
Используйте reduce
для массива, и, поскольку массив повторяется, присвойте символ индекса итератора (i
) в строке (s
) индексу значения (v
) нового массива ( ra
). После завершения reduce
используйте join
, чтобы превратить возвращенный массив (ra
) обратно в строку.
let scramble = (s, a) => a.reduce((ra,v,i)=> (ra[v] = s[i], ra), []).join("");
Пример:
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
}
* +1032 * Пример: * 1 033 *
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]));