我坚持这个挑战,任何帮助都会很棒。
'创建一个将字符串和数组作为参数的函数。将字符串中的字母重新排列为索引号指定的顺序。返回"重新混合"串。 实例
混音(" abcd",[0,3,1,2])➞" acdb"'
我的尝试 -
function remix(str, arr) {
var arr2 = [];
for (var i=0; i<str.length; i++){
arr2.splice(arr[i], 0, str[i]);
}
return arr2.join("");
}
这将解决一些但不是所有的测试。 例如。 (&#34; abcd&#34;,[0,3,1,2])=&#34; acdb&#34;但有些人没有。 例如。 &#34;责任&#34;,[0,6,8,11,10,7,13,5,3,2,4,12,1,9]) 应该是 - &#34; rtibliensyopis&#34;我的是&#34; rteislbpoyinsi&#34;
答案 0 :(得分:2)
您可以使用arr[i]
的值作为实际字母的目标索引。
function remix(str, arr) {
var result = [],
i;
for (i = 0; i < str.length; i++) {
result[arr[i]] = str[i];
}
return result.join('');
}
console.log(remix("abcd", [0, 3, 1, 2])); // "acdb"
console.log(remix("responsibility", [0, 6, 8, 11, 10, 7, 13, 5, 3, 2, 4, 12, 1, 9])) // "rtibliensyopis"
&#13;
答案 1 :(得分:0)
function myFunction(text, nums){
var arr = [];
for(var num in nums){
arr.push(text.charAt(nums[num]));
}
return arr;
};
我认为这应该有效。
答案 2 :(得分:0)
编辑回答 - 首先误解了这个问题。
您可以使用Array.prototype.reduce
根据str
的目标位置使用来自arr
的字母填充新数组中的位置:
const remix = ( str, arr ) => (
arr.reduce( (acc, target, idx) => {
acc[target] = str[idx]; return acc;
}, [])
).join('');
或将str
中的字母数组缩减为数组:
const remix = ( str, arr ) => (
[...str].reduce( (acc, letter, idx) => {
acc[arr[idx]] = letter; return acc;
}, [])
).join('');