javascript - 如何按整数列对 json 对象进行排序,例如 "3"、 "2"、 "5"

标签 javascript json sorting vue.js lodash

我想对一个 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/

相关文章:

javascript - 我怎样才能简单地使用这个数字格式验证正则表达式?

javascript - Three.js:设置 `texture.needsUpdate = true`非常慢

javascript - 如何使用 javascript 在 JSON 中找到第二个键名

javascript - 如何对这样格式的数组进行排序?

arrays - 最小长度未排序连续子数组

折叠式菜单的 JavaScript 代码

javascript - Angular 显示滚动不起作用

c++ - 用于保存一类 vector 或 SQL 数据库的简单文件

java - Jersey 休息 : how to return interface instead of class

PHP-基于另一个数组对数组进行排序?