试图在javascript中添加数字

时间:2018-04-29 01:03:38

标签: javascript

我正在尝试编写一个解密加密邮件的程序。加密的消息是一组非常长的数字" .296.294.255.268.313.278.311.270.290.305.322.252.276.286.301.305.264.301.251.269.274.311.304。 230.280.264.327.301.301.265.287.285.306.265.282.319.235.262.278.249.239.284.237.249.289.250。 282.240.256.287.303.310.314.242.302.289.268.315.264.293.261.298.310.242.253.299.278.272.333。 272.295.306.276.317.286.250.272.272.274.282.308.262.285.326.321.285.270.270.241.283.305.319。 246.263.311.299.295.315.263.304.279.286.286.299.282.285.289.298.277.292.296.282.267.245 ..... ECT&#34 ;. 消息的每个字符都被转换为三个不同的数字(例如,消息的第一个字符是< 230 .280 .264'第二个字符是' .327.301.265'等等)。 所以我试图使用javascript添加三个数字的组,然后将它们保存为自己的变量。谢谢

3 个答案:

答案 0 :(得分:1)

假设msg中包含该字符串,则会将其拆分并将三元组一起添加。

const [, triplets] = msg
  .split('.')
  .slice(1)
  .map(v => +v)
  .reduce(([count, list], val, i) => {
    if ((i + 1) % 3) return [count + val, list];
    return [val, list.concat(count)];
}, [0, []]);

答案 1 :(得分:1)

这取决于数据的传输方式。看起来您可以将数据作为字符串(或将其解析为字符串),然后使用split方法创建所有数字的数组。

var numbers = "234.345.456.567"
var arr = numbers.split(".")

然后,您将遍历数组,为每组三个

执行所需的操作
var newArray[]
var i
for(i = 0; i < length; i += 3){
    //Add values here
    //Parse back to int
    newArray.push("sum Value")
}

希望这与你所需要的一致。

答案 2 :(得分:0)

使用正则表达式匹配所有三个组,然后通过将字符串分割为map并将3加在一起,将每个组.与数字匹配:

&#13;
&#13;
const input = '296.294.255.268.313.278.311.270.290.305.322.252.276.286.301.305.264.301.251.269.274.311.304. 230.280.264.327.301.301.265.287.285.306.265.282.319.235.262.278.249.239.284.237.249.289.250. 282.240.256.287.303.310.314.242.302.289.268.315.264.293.261.298.310.242.253.299.278.272.333. 272.295.306.276.317.286.250.272.272.274.282.308.262.285.326.321.285.270.270.241.283.305.319. 246.263.311.299.295.315.263.304.279.286.286.299.282.285.289.298.277.292.296.282.267.245';
const groupsOfThree = input.match(/\d{3}\.\d{3}\.\d{3}\./g);
const sums = groupsOfThree.map((group) => {
  const nums = group.split('.').map(Number);
  return nums[0] + nums[1] + nums[2];
});
console.log(sums);
&#13;
&#13;
&#13;