在循环

时间:2017-04-20 21:07:24

标签: javascript arrays

我正在尝试制作某种密码学家,我需要替换ex。当用户要求时,每个“a”和“b”。

if (DoYouWannaCrypt == 1) {
  binput.forEach(function(v, i) {
    if(v === "a") {
      input[i] = "$"
    }
  })
};

这样可以正常工作,但我想添加另一个条件,即只应对另一个数组的所有第5个值进行此操作。

if (Val is 5th) {
  if (DoYouWannaCrypt == 1){
    binput.forEach(function(v, i) {
      if(v === "a") {
        input[i] = "$"
      }
    })
  }
};

我想你可以看到我被困在哪里。我需要它才能为所有第五个值而不仅仅是第一个值。

2 个答案:

答案 0 :(得分:2)

这就是地图的用途:

var crypted=binput.map((l,i)=>(i+1)%5?l:({"a":"$"}[l]||l));

http://jsbin.com/zepewituro/edit?console

检查索引(从0开始,这就是为什么+1)模5不是0,然后取字母l,如果它是0(那么我们在第5 * n位置),然后我们尝试替换我们的另一个字母,如果不可能回写到字母(|| l)。

答案 1 :(得分:1)

由于您的代码似乎与您的问题无关,因此我先将其安全地存储在一个函数中:

function something(binput, input, DoYouWannaCrypt) {
  if (DoYouWannaCrypt == 1)
    binput.forEach(function(v, i) {if (v === "a") input[i] = "$"});
}

如果您只想对anotherArray的第一个元素执行此操作

for (let Val in anotherArray)
  if (!Val) something(binput, input, DoYouWannaCrypt);

如果你想对anotherArray的每个元素执行

for (let Val in anotherArray)
  something(binput, input, DoYouWannaCrypt);

如果您想对anotherArray的每五个元素执行

for (let Val in anotherArray)
  if (!(Val%5)) something(binput, input, DoYouWannaCrypt);