【问题标题】:conversion data calculations转换数据计算
【发布时间】:2022-01-25 15:12:16
【问题描述】:

祝你假期愉快,感谢你的帮助

我已经尝试解决我的问题,但我没有提供足够的信息,我将尝试重新制定它

我希望输出是这些数字

input 14:1   output 141 
input 13:8   output 141
input 13:18   output 241 
input 18:13   output 291 

计算如下 输入 14:1 4+1 不大于 9 所以第一个是剩下的,我们把它放在最后,在它输出 141 之前加 14

输入 13:8 3 + 8 大于 9 (11) 所以我将它们中的 1 到 3 加起来变成 4 并且 1 是我们在最后输出 141 处添加的其余部分

input 13:18   output 241 
input 18:13   output 291 

这里试图帮助我的是一个示例代码,他们感谢一位来自德国的女士

const
    fn = string => {
        const
            sum = (a, b) => (a + b).toString().padStart(2, 0).split(''),
            [a, b] = string.split(':').map(s => s.padStart(2, 0)),
            result = [];
 
        let i = 2;
        while (i--) {
            const sum = +a[i] + +b[i];
            result[i] = sum > 10
                ? +[+a[i] + Math.floor(sum / 10), sum % 10].join('')
                : sum === 10 ? 1 : sum;
        }
        return result.join('');
    };
    
 
console.log(fn('13:18')); // I want 241 correct output 241
console.log(fn('18:13')); // I want 291 correct output 291

console.log(fn('13:15')); //  I want 28 correct output 28
console.log(fn('15:13')); //  I want 28 correct output 28

console.log(fn('14:1')); // I want 141 bad output   15
console.log(fn('13:8')); // I want 141 correct output 141
console.log(fn('78:96')) // I want 174 bad output   "8694"

这段代码计算了一些正确的结果和一些错误的结果

如果小于10 console.log(fn('14:1')); // 我想要这个 141 输出 / 给出一个错误的输出 "15"

【问题讨论】:

  • 解释 13:18 如何变成 241
  • 还是一头雾水……你能说出 289:356 是什么吗?
  • @sandeep.kgp 13:18 (3+8=11) 10/1 如果它们大于 9,这就是我们如何划分数字(并将其余部分添加到下一个数字,即4) 最后 1 + 1 = 2 输出 141
  • 好的..那么 78:96 会是什么?
  • @sandeep.kgp 8+6 = 14 最后 4 位女士接下来 7+1=8+9 = 17 输出 174

标签: javascript data-conversion


【解决方案1】:

根据您解释的逻辑,并假设数字的长度最大为 2。

附: +(加号)前缀将字符串转换为整数运行时

第一个解决方案 =>

const fn = (string) => {
      const [a,b] = string.split(':').map(s=>s.padStart(2,0)), result=[];
      // for first position
      result[0] = +a[0] + +b[0];
      // for second position
      let secondIndexTotal =  (+a[1] + +b[1]).toString();

      result[1] = +secondIndexTotal > 9 ? (+a[1] + 
      +secondIndexTotal[0]).toString() + secondIndexTotal[1] : a[1]+b[1];

      return result.join('');
}

console.log(fn('13:18')); // output 241
console.log(fn('18:13')); // output 291

console.log(fn('13:15')); // output 235
console.log(fn('15:13')); // output 253

console.log(fn('14:1')); // output 141
console.log(fn('13:8')); // output 141

更新的解决方案 =>

const fn = (string) => {
  const [a, b] = string.split(":").map((s) => s.padStart(2, 0)),
    result = [];
  // for second position
  const secondIndexTotal = (+a[1] + +b[1]).toString();

  result[1] = +secondIndexTotal > 9 ? secondIndexTotal[1] : b[1];

  // for first position
  const firstIndexTotal = +a[0] + +b[0];
  result[0] =
    firstIndexTotal > 9
      ? firstIndexTotal + (+secondIndexTotal > 9 ? +secondIndexTotal[0] : 0)
      : firstIndexTotal.toString() +
        (+a[1] + (+secondIndexTotal > 9 ? +secondIndexTotal[0] : 0));

  return result.join("");
};
console.log(fn("13:18")); // output 241
console.log(fn("18:13")); // output 291
console.log(fn("78:96")); // output 174
console.log(fn("14:1")); // output 141
console.log(fn("13:15")); // output 235
console.log(fn("15:13")); // output 253

【讨论】:

  • 78:96 8+6 = 14 4 ladies at the end next 7+1=8+9 = 17 output 174 所有结果都是正确的,但是当我尝试时这个结果不正确console.log(fn('78:96')); give 1694
  • console.log(fn('13:15')); // 输出 28 console.log(fn('15:13')); // 如果结果为 28 则输出 28 它将完美运行并且 console.log(fn('78:96')) //1694 想要 174 否则它完美运行只是没有减少这些数字
  • 你能做到吗,非常感谢你
  • console.log(fn('13:15')) 你想要什么输出?
  • console.log(fn("13:15")); // output 28 console.log(fn("15:13")); // output 28
猜你喜欢
  • 1970-01-01
  • 2019-04-21
  • 1970-01-01
  • 2016-03-04
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 1970-01-01
  • 2016-06-06
相关资源
最近更新 更多