我想对一个 json 对象进行排序,该对象有一列包含数字。但它排序不正确,因为该列是字符串类型。如何按数字顺序对字符串数字进行排序?
var myArray = [{
name: 'David',
total: "6"
}, {
name: 'John',
total: "2"
}, {
name: 'Joe',
total: "8"
}, {
name: 'Ana',
total: "14"
}];
var ascending;
var descending;
function test1() {
ascending = _.sortBy(myArray, 'total');
console.log(JSON.stringify(ascending));
}
function test2() {
descending = ascending.reverse();
console.log(JSON.stringify(descending));
}
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
<button onclick="test1()">Ascending</button>
<button onclick="test2()">Descending</button>
最佳答案
使用_.sortBy()
使用回调,并将总计
转换为数字:
var myArray = [{"name":"David","total":"6"},{"name":"John","total":"2"},{"name":"Joe","total":"8"},{"name":"Ana","total":"14"}];
var ascending;
var descending;
function test1() {
ascending = _.sortBy(myArray, v => Number(v.total));
console.log(JSON.stringify(ascending));
}
function test2() {
descending = ascending.reverse();
console.log(JSON.stringify(descending));
}
<script src="https://cdn.jsdelivr.net/npm/lodash@4.17.4/lodash.min.js"></script>
<button onclick="test1()">Ascending</button>
<button onclick="test2()">Descending</button>
关于javascript - 如何按整数列对 json 对象进行排序,例如 "3"、 "2"、 "5",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53934408/