背景
比如这样一个场景,我们需要每次取数组中的当前item的下一个item,如果当前是最后一个,则取数组中的第一个,这样循环取数
使用场景
el-table中的sort排序,表头设置排序方式,每次点击表头,会根据传入的顺序进行排序切换,比如当前日期顺序是【升序、降序、null】,则每次点击到null后,再点击就应该回到第一个顺序
解决
第一种方案:
每次找到当前索引index,然后判断当前是否已经是数组的边界值,如果是,则赋值为0
第二种方案:
直接判断当前索引是否大于length-2,如果大,那就赋值为0
el-table是这么做的(点击排序的时候,给出排序顺序,sort-orders字段)
toggleOrder({ order, sortOrders }) {
// *order和sortOrders关系:order来自于default-sort
// *sort-orders表示排序的选项顺序数组,比如给出来这样的排序['ascending', 'descending'],那在我们点击字段的时候会按照这个顺序进行排序,第一次是升,第二次是降(跟点击小箭头无关哈)
if (order === '') return sortOrders[0];
const index = sortOrders.indexOf(order || null);
// *这个地方length-2,是因为如果是数组中的最后一个,那就不能直接index+1了,所以直接赋值为0就好了
return sortOrders[index > sortOrders.length - 2 ? 0 : index + 1];
},