【问题标题】:_.sortBy() removing extra 0 from floating point value (converting 0.10 -> 0.1 and so on)_.sortBy() 从浮点值中删除额外的 0(转换 0.10 -> 0.1 等等)
【发布时间】:2017-03-01 14:00:02
【问题描述】:

下面是我想要排序的数组 -

var baseBetAmount = [
{
    val: 'OtherBaseBet',
    text: 'Other'
},
{
    val: 0.10,
    text: '$0.10'
},
{
    val: 0.20,
    text: '$0.20'
},
{
    val: 0.50,
    text: '$0.50'
},
{
    val: 1,
    text: '$1'
},
{
    val: 2,
    text: '$2'
}]

我在下面写函数来排序。

  var options=  _.sortBy(baseBetAmount)

它在输出下方返回 -

[
{
    val: 'OtherBaseBet',
    text: 'Other'
},
{
    val: 0.1,
    text: '$0.10'
},
{
    val: 0.2,
    text: '$0.20'
},
{
    val: 0.5,
    text: '$0.50'
},
{
    val: 1,
    text: '$1'
},
{
    val: 2,
    text: '$2'
}]

这里 0.10 被 0.1 替换, 0.50 被 0.5 替换,依此类推。 任何人都可以在这里帮助我,我不希望 0.10 被 0.1 取代等等

【问题讨论】:

  • 0.500.5 相同。如果你想要0.50,试试num.toFixed(2)
  • 总是这样,因为 0.1 与 0.10 作为数字相同。只有字符串不同。我建议只在数字的视觉效果中使用.toFixed(2),将其转换为点后两位数字的字符串。请注意在任何计算之后执行此操作。所以在这种情况下,除了默认:bet.text = "$" + bet.val.toFixed(2);
  • 但是如果这个数组包含 0.100000 或 0.2400000 怎么办
  • 没关系。 0.1 作为数字与 0.1000000 相同,因此任何计算都将保持不变。只有字符串不同,使用 toFixed(),您可以在数字的字符串表示中添加任意数量的尾随零。
  • @Shilly 实际上我不想更改此数组中的值,它们应该保持原样,我正在使用这些值在其他地方打印。价值观不应该随任何变化而改变

标签: javascript underscore.js lodash


【解决方案1】:

这是一个可行的解决方案,但在进行数学计算时需要解析值。

var baseBetAmount = [
{
    val: 'OtherBaseBet',
    text: 'Other'
},
{
    val: 0.10,
    text: '$0.10'
},
{
    val: 0.20,
    text: '$0.20'
},
{
    val: 0.50,
    text: '$0.50'
},
{
    val: 1,
    text: '$1'
},
{
    val: 2,
    text: '$2'
}];

 var options = _.sortBy(baseBetAmount).map(function(base){
	 if(_.isNumber(base.val)){
		 base.val = base.val.toFixed(2);
	 }
	 return base;
 });

console.log(options);
<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <title>JS Bin</title>
</head>
<body>
	
<script src="https://cdn.jsdelivr.net/lodash/4/lodash.min.js"></script>
</body>
</html>

toFixed() 返回一个字符串,因此您必须使用parseFloat 对其进行解析以进行数学计算。

【讨论】:

    猜你喜欢
    • 2015-10-02
    • 1970-01-01
    • 1970-01-01
    • 2011-03-12
    • 1970-01-01
    • 2022-01-13
    • 2018-04-03
    • 2014-10-04
    相关资源
    最近更新 更多