使用数组索引/ Javascript更改字符串的顺序

时间:2017-10-19 08:12:09

标签: javascript arrays string

我坚持这个挑战,任何帮助都会很棒。

'创建一个将字符串和数组作为参数的函数。将字符串中的字母重新排列为索引号指定的顺序。返回"重新混合"串。 实例

混音(" 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;

3 个答案:

答案 0 :(得分:2)

您可以使用arr[i]的值作为实际字母的目标索引。

&#13;
&#13;
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;
&#13;
&#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('');