我有一个像这样的 json 对象列表(载体):在我的 *.vue 中,我将其渲染为:<tr v-for="carrier in this.carriers"> <td>{{ carrier.id }}</td> ....可以单击我的 thead / th's 对表进行排序,如下所示:<thead> <tr> <th class="pointer link" @click="sort('id')"> ID <span v-if="'id' === currentSortCol"> {{currentSortDir ==='asc' ? '↑':'↓'}} </span> </th> <th class="pointer link" @click="sort('region.name')"> Region <span v-if="'region.name' === currentSortCol"> {{currentSortDir ==='asc' ? '↑':'↓'}} </span> </th>....我的排序方法是这样的: sort(col) { if (this.currentSortCol === col) { this.currentSortDir = this.currentSortDir === "asc" ? "desc" : "asc"; } else { this.currentSortCol = col; } this.carriers.sort(this.sortBy(col, this.currentSortDir)); }, sortBy(property, order) { this.currnetSortDir=order; return function(a, b) { const varA = typeof a[property] === "string" ? a[property].toUpperCase() : a[property]; const varB = typeof b[property] === "string" ? b[property].toUpperCase() : b[property]; let comparison = 0; if (varA > varB) comparison = 1; else if (varA < varB) comparison = -1; return order === "desc" ? comparison * -1 : comparison; }; }问题: 排序 asc, desc 与 ID (Carrier.id) 配合良好。但它不会对嵌套的 Carrier.region.name 列进行排序。如何对嵌套列进行排序,例如载体.区域.名称?
1 回答
幕布斯7119047
TA贡献1794条经验 获得超8个赞
您应该使用包中的“get”方法lodash来获取嵌套的道具:
import _get from 'lodash/get'
...
const propValueA = _get(a, property);
const propValueB = _get(b, property);
const varA = typeof propValueA === "string" ? propValueA.toUpperCase() : propValueA;
const varB = typeof propValueB === "string" ? propValueB.toUpperCase() : propValueB;
添加回答
举报
0/150
提交
取消