var Arr = [
{size: "8"},
{size: "9"},
{size: "10"},
{size: "7"},
{size: "6"}
]
console.log(_.sortBy(Arr, 'size'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
我在上面的代码中创建了一个示例,该示例未能根据给定的数组正确排序。
答案 0 :(得分:2)
您的尺寸属性是String
类型,而不是Number
类型。在JS中,引号("
或'
)中的值表示String
类型。
给它们加上数字,它将正确排序。
var Arr = [
{size: 8 },
{size: 9 },
{size: 10},
{size: 7 },
{size: 6 }
]
console.log(_.sortBy(Arr, 'size'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
答案 1 :(得分:2)
您需要将size
更改为数字:
var Arr = [
{size: "8"},
{size: "9"},
{size: "10"},
{size: "7"},
{size: "6"}
]
console.log(_.sortBy(Arr, (obj) => parseInt(obj.size)));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>
答案 2 :(得分:2)
这是字符串未按预期解释为数字的情况。以下是使用unary plus运算符进行投射的两种方法,有和没有_:
var Arr = [
{size: "8"},
{size: "9"},
{size: "10"},
{size: "7"},
{size: "6"}
]
console.log(Arr.sort((a, b) => +a.size - +b.size));
console.log(_.sortBy(Arr, o => +o.size));
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.9.1/underscore-min.js"></script>