javascript - Vue.js - 如何通过特定属性对数组中的对象进行排序并使用“v-for”进行渲染
问题描述
我有一个数组,里面有一些对象。每个对象都包含一些属性。
我使用 vue.js v-for 方法在列表中呈现它。
但是我不能按照给定属性的特定顺序渲染它。我使用此函数对其进行升序排序:
evenNumbers: function () {
return this.numbers.sort(function (a, b) { return a - b });
}
它适用于像 [22, 1, 2, 3, 4, 5] 这样的简单数组。但它不适用于这样的对象:
numbers2: [
{
name: 'Alan',
age: 72
},
{
name: 'Thomas',
age: 32
},
{
name: 'Thomas',
age: 32
},
{
name: 'Michal',
age: 32
},
]
}
我想按年龄升序对它们进行排序。
最后,我想在 li 中渲染它们,例如只有 {{ age }} 属性。
解决方案
由于您现在有复杂的对象,因此直接按对象排序将无法按预期工作(运算符运行一些隐式转换,导致NaN
每次比较)。
您必须按特定属性排序,在本例中为age
。所以:
evenNumbers2: function () {
return this.numbers2.sort(function (a, b) { return a.age - b.age });
}
请参阅更新的小提琴。
推荐阅读
- rest - 作为多部分文件发布到给定的端点
- ocaml - 了解Ocaml的结构
- python - 用于 Azure 活动日志的 python 脚本
- javascript - 带有 ASP.Net Web 表单的 Bing Map AutoSuggest API
- spring-boot - 在资源服务器上解码 Spring Boot 2.1 OAuth2 编码的 JWT
- python - 获取与python中另一列的最大值对应的值
- excel - 使用 VBA sub 在 Excel 中升序/降序排序
- javascript - 为什么我的 REQ.body.imageURL 在 PUT 方法中未定义?
- scala - sbt 程序集文档中的“已经是容器的一部分”是什么意思?
- python - 在 Python 库中存储 OAuth 令牌