在这里我创建了hashmap数组并创建了一个函数。
var rule =
{
"c": "d",
"a": "o",
"t": "g",
"h": "a",
"1":"@",
"e": "n",
"n": "t"
}
function convert(str) {
return [...str].map(d => rule[d]).join('')
}
console.log(convert("cat1hen"))
它将输出显示为“ dog @ ant”。但是我想要不同 输出。每次预期输出为“ @”,我想交换“ @”以将其值与下一个数组交换 元素。
这意味着输出应为“ doga @ nt”,而不是“ dog @ ant”。@的位置在此与下一个交换 数组元素,即“ a”。 仅当预期输出为“ @”时,才应交换头寸。
答案 0 :(得分:2)
您可以向您的索引中添加第二个参数.map()
来调用索引(i
),然后在出现@
时交换值:
有关更多详细信息,请参见代码注释:
var rule = {
"c": "d",
"a": "o",
"t": "g",
"h": "a",
"1": "@",
"e": "n",
"n": "t"
}
function convert(str) {
let strArr = [...str];
return strArr.map((d, i, arr) => {
if (rule[d] == '@') { // If current letter maps to '@'
return rule[arr[i + 1]]; // Set the current letter to the next one
} else if (rule[arr[i - 1]] == '@') { // If the previous letter mapped to '@'
return '@'; // Set the current letter to the '@' SAME AS: return rule[strArr[i - 1]]
}
return rule[d];
}).join('')
}
console.log(convert("cat1hen"))