_.sortBy()从浮点值中删除额外的0(转换0.10 - > 0.1等等)

时间:2017-03-01 14:00:02

标签: javascript underscore.js lodash

下面是我要排序的数组 -

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替换等等

1 个答案:

答案 0 :(得分: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进行数学计算来解析它。