javascript - 即使在研究了 JS 和 JQ 之后也无法弄清楚 parseInt

标签 javascript jquery parseint

我有一个对象,其属性包含一个大字符串。该属性具有一个值,其中包含先前在脚本中生成的随机数,格式为 x , x , x , x ...(不是也不能是数组,因为程序中对变量的其他需求)等等在。我试图获得这些数字的总和,我的第一个想法是使用 parseInt() 来完成此操作,将它们全部拆分然后将它们加在一起,但是当我这样做时,它只返回第一个数字。这是我应该做的,但我只是做错了?或者是否有其他功能可以使这变得更容易?

该程序是一个二十一点游戏,我正在制作它来看看我对所学内容的理解程度。

这是我试图创建的函数,用于查看用户在受到打击时是否崩溃(到目前为止还没有太多,因为我无法弄清楚 parseInt 的事情)

'

function checkBust() {

    var total = parseInt(user.hand, 10);

}

'

用户对象

'

var user = {
hand: dealUser()
};

'

以及设置对象属性的函数

function randomCard() {

            // random number between 0 and 10
            var j = Math.random() * 10;

            // round that number into a var called card
            var card = Math.round(j);   

            // if card is 0, assign a J Q or K by making a random number again
            if (card === 0) {

                //another random number
                var k = Math.random() * 10; 

                // checks random number and assign J Q or K                     
                if (k <= 4) {
                    card = 'J';
                } else if (k <= 7) {
                    card = 'Q';
                }
                else {
                    card = 'K';
                }
            }

            // value of the function is a single card
            return card;

        }

function dealUser() {

            // empty array to store cards
            var x = [];

            // var to start for loop 
            var i = 0;      

            // start for loop 
            for (i; i < 2; i++) {

                // add a random card to the i^th index of x
                x[i] = randomCard();
            }
            // value for function is array of two cards x[0] , x[1] 
            var cards = x[0] + " , " + x[1]; 
            return cards;

        }

最佳答案

parseInt 将在到达非数字字符时停止解析

parseInt('1234,5678', 10); // => 1234
// since a comma (,) is not a numeric character, everything after is ignored.

您必须使用逗号作为分隔符将字符串拆分为字符串数组:

'1234,5678'.split(','); // => ['1234', '5678'];

然后解析数组的每个元素,将它们转换为数字,然后可以对它们求和。

我的做法是这样的:

var nums = "1,2,3,4,5";

var sum = nums.split(',').reduce(function(memo, num) {
  return memo + parseInt(num, 10);
}, 0);

console.log(sum); // => 15

这应该有效。请参阅jsbin example .

请注意,分割参数需要与您在字符串中使用的分隔符相匹配。对于此示例,',' 是合适的。对于您的示例,您可能需要 /\s*,\s*/

不相关

由于您提供了代码示例,我可以看到您花费了大量精力尝试回避并将值转换为您需要的类型,而不是公开对象中的类型。我可以建议:

function Stack(cards) {
  this.cards = cards || [];
}

Stack.prototype.toString = function() {
  return this.cards.join(' , ');
};

Stack.prototype.sum = function() {
  return this.cards.reduce(function(memo, card) {
    return memo + parseInt(card, 10);
  }, 0);
};

function randomCard() {
  return Math.floor(Math.random() * 13) + 1;
}

Stack.dealHand = function() {
  var card1 = randomCard(), card2;
  do { card2 = randomCard(); } while (card1 === card2);
  return new Stack([card1, card2]);
};

// Example
var hand = Stack.dealHand();
console.log(hand + ' = ' + hand.sum()); // => '3 , 11 = 14'

关于javascript - 即使在研究了 JS 和 JQ 之后也无法弄清楚 parseInt,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23401192/

相关文章:

php - 在验证之后但在 Woocommerce Checkout 中创建订单之前进行 Hook

java - 在 Java 中用 parseInt 分割字符串

php - json第一个索引值在jquery中获取

javascript - 将 dom 元素插入 window.open() 会破坏原始页面

javascript - 保存用户编辑的时间线?

javascript - 使用 jquery .each 循环从数组中的值创建多维 javascript 对象

javascript - jQuery .click() 在搜索建议中不起作用

javascript - 当单击页面上的任意位置时,jQuery 禁用 div

javascript - 如何使用 if 语句从 select 标记中提取值? (Javascript)

javascript - Javascript中parseInt(x)和+(x)有什么区别