如何对数组中的每个对象执行计算,然后输出该数组?

问题描述 投票:6回答:3

我正在尝试在Javascript(n ^ e mod n)中为我的数组中的每个元素e执行计算,然后输出随后创建的新数组。我该怎么做?这是我到目前为止已经想到的,但代码不起作用。

这是我到目前为止已经想到的,但代码不起作用。

function encryptText() {
  var plaintext = document.getElementById('plaintext').value;
  var n = letterValue(String(plaintext));
  ciphertext = array()
  foreach(addon_array as key => col) {
    ciphertext[key] = Math.pow(col, e) % n;
  }
  document.getElementById("output3").innerHTML = "Encrypted text = " + ciphertext;
}

我希望得到一个修改过的整数数组(密文)作为结果。谢谢

javascript arrays rsa
3个回答
6
投票

您可以在数组上使用Javascript map()函数。

const arr = [1, 2, 3];
const newArr = arr.map(i => i * 2);

// should be [2, 4, 6]
console.log(newArr); 

2
投票

使用Javascript map函数,如下所示:

function encryptText() {
  var plaintext = document.getElementById('plaintext').value;
  var n = letterValue(String(plaintext));
  ciphertext = addon_array.map((el) => Math.pow(el, e) % n);
  document.getElementById("output3").innerHTML = "Encrypted text = " + ciphertext;
}

2
投票

你在javascript中使用php语法:)

在js中它应该看起来像这样

function encryptText() {
  var plaintext = document.getElementById('plaintext').value;
  var n = letterValue(String(plaintext));
  var ciphertext = []
  for(var key in addon_array) {
    let col = addon_array[key]
    ciphertext[key] = Math.pow(col, e) % n;
  }
  document.getElementById("output3").innerHTML = "Encrypted text = " + ciphertext;
}

但正如前面提到的,在js中更好的方法是使用Array.map函数

function encryptText() {
  var plaintext = document.getElementById('plaintext').value;
  var n = letterValue(String(plaintext));
  var ciphertext = addon_array.map((el) => Math.pow(el, e) % n);
  document.getElementById("output3").innerHTML = "Encrypted text = " + ciphertext;
}

它应该工作,如果你确定,addon_array真的是数组,而不是一个对象。 js中的数组与php略有不同。阅读更多here

© www.soinside.com 2019 - 2024. All rights reserved.