undercore _.sortBy 没有正确排序数组对象
undercore _.sortBy not sorting array objects correctly
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>
我在上面创建了一个代码示例,它没有根据我给定的数组正确排序。
您的尺码属性是 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>
您需要将 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>
这是一种字符串未按预期解释为数字的情况。这里有两种使用 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>
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>
我在上面创建了一个代码示例,它没有根据我给定的数组正确排序。
您的尺码属性是 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>
您需要将 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>
这是一种字符串未按预期解释为数字的情况。这里有两种使用 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>