在v-for循环中显示数组之前,如何按名称或性别对数组进行排序?https://jsfiddle.net/rg50h7hx/
<div id="string">
<ul>
<li v-for="array in arrays">{{ array.name }}</li>
</ul>
</div>// Vue.js v. 2.1.8
var string = new Vue({
el: '#string',
data: {
arrays: [
{ name: 'kano', sex: 'man' },
{ name: 'striker', sex: 'man' },
{ name: 'sonya', sex: 'woman' },
{ name: 'sindell', sex: 'woman' },
{ name: 'subzero', sex: 'man' }
]
}
})我是不是要用“计算”之类的?
发布于 2017-03-19 07:48:30
是的,一种简单的方法是创建一个可以返回sortedArray的计算属性,如下所示:
computed: {
sortedArray: function() {
function compare(a, b) {
if (a.name < b.name)
return -1;
if (a.name > b.name)
return 1;
return 0;
}
return this.arrays.sort(compare);
}
}参见正在工作的演示。
您可以找到排序这里的文档,其中包含一个compareFunction。
compareFunction指定定义排序顺序的函数。如果省略,则根据每个字符的Unicode代码点值以及每个元素的字符串转换对数组进行排序。
发布于 2017-09-30 23:27:03
使用箭头函数es6:
sortedArray(){
return this.arrays.sort((a, b) => a.name - b.name );
}发布于 2018-04-23 14:34:00
Html端
<div id="string">
<ul>
<li v-for="array in sortArrays(arrays)">{{ array.name }}</li>
</ul>
</div>使用Lodash编写的Vue js代码
var string = new Vue({
el: '#string',
data: {
arrays: [
{ name: 'kano', sex: 'man' },
{ name: 'striker', sex: 'man' },
{ name: 'sonya', sex: 'woman' },
{ name: 'sindell', sex: 'woman' },
{ name: 'subzero', sex: 'man' }
]
},
methods: {
sortArrays(arrays) {
return _.orderBy(arrays, 'name', 'asc');
}
}
})https://stackoverflow.com/questions/42883835
复制相似问题