为了账号安全,请及时绑定邮箱和手机立即绑定

vueJS 对嵌套表行进行排序

vueJS 对嵌套表行进行排序

慕娘9325324 2023-08-24 15:57:12
我有一个像这样的 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' ? '&#8593;':'&#8595;'}}         </span>      </th>      <th class="pointer link" @click="sort('region.name')">         Region         <span v-if="'region.name' === currentSortCol">            {{currentSortDir ==='asc' ? '&#8593;':'&#8595;'}}         </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;


查看完整回答
反对 回复 2023-08-24
  • 1 回答
  • 0 关注
  • 104 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信