【问题标题】:Replace digit in number if exists or push to end if it doesn't exist如果存在则替换数字中的数字,如果不存在则推到结束
【发布时间】:2017-12-17 01:33:31
【问题描述】:

给定以下数据:

var x = 3
var number = 0621

如何枚举数字并尝试在该数字中找到 x 位?如果 x 存在于数字中,则删除该数字。

整数可以当作数组处理吗?

【问题讨论】:

  • 你可以使用.indexOf().replace()函数..."或者如果它不存在就推到尾"推到尾是什么?
  • var y = ~~((number+'').replace(x+'',''))
  • @ThinkingMedia - 会喜欢按位运算符的细分
  • @ThinkingMedia 你有没有试过你的建议,因为我得到了 401 的输出...
  • 0621 is 401,因为前导 0 使它成为八进制。使用字符串“0621”

标签: javascript


【解决方案1】:

小心。由于八进制问题,一旦您将 0621 分配给它,数字就会变成 401 - 无效的八进制数字 08 和 09 会更加棘手。

改为将数字设为字符串,您可以使用 charAt 或 indexOf:

function chop(numString,num) {
  var pos = numString.indexOf(""+num); 
  if (pos ==-1) numString+=num; 
  else numString = numString.slice(0, pos) + numString.slice(pos+1);
  return numString;
}

var num = 0621;
console.log("Octal",num); // to show the octal issue

// better: 
console.log(chop("0621", 2));
console.log(chop("0621", 3));

【讨论】:

  • 请查看更新。我不确定较新的浏览器是否将 0nnn 处理为八进制或必须执行 0xnnn
  • 是的,这是一个很好的答案!这就是我投赞成票的原因。我不确定您是否希望我通过更正来更新您的答案。
【解决方案2】:

整数可以当作数组处理吗?

您可以将 number 转换为 string 然后拆分它,这将为您提供一个数组。

如何枚举数字并尝试在该数字中找到 x 位?如果 x 存在于数字中,则删除该数字

现在您可以遍历数字数组来检查您输入的x 是否在其中。

这是你需要的:

var x = 3
var number = 5783;
//This will give you an array with your digits
var arr = (String(number)).split('');

if (arr.indexOf(String(x)) === -1) {
  arr.push(x);
} else {
  arr = arr.map(function(n) {
    return n == x ? '' : n;
  });
}

console.log(arr.join(''));

注意:

请注意,在 number 中前导 0 会给你带来意想不到的结果,所以要小心。

【讨论】:

    【解决方案3】:

    会有这样的吗?

    var x = 3
    var number = 0621;
    var _new = '';
    for (var t = 0; t < String(number).length; t++) {
      if (String(number).charAt(t) !== String(x)) _new += String(number).charAt(t);
    }
    
    console.log('and new', +_new);

    【讨论】:

    • 不,不会。看到数字变成 401 了吗?
    • 你的小提琴也没有正确处理数字。请重新阅读问题
    • 是的@mplungjan,我是西班牙人,所以我没有得到所有的问题。在看到您的解决方案后,ms 认为这是问题所在。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2019-08-11
    • 1970-01-01
    • 2021-09-01
    相关资源
    最近更新 更多