如何将一个数组元素与其下一个数组元素交换并显示输出?

时间:2018-11-28 08:40:54

标签: javascript

在这里我创建了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”。 仅当预期输出为“ @”时,才应交换头寸。

1 个答案:

答案 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"))