一、背景
根据客户的使用感受来提出的需求,存在数据量大的列表中需要添加此功能。方便用户对数据权重的进行划分,方便用户查找数据。我将从以下几个方面介绍如何完成这个需求。
二、代码
代码给出重要部分的,下面会有相关的代码注解,如果有什么疑问,欢迎提问。如果有什么更好的解决方式,那就更好了。欢迎各位大佬指教。
// 定义一个函数,用来比较两个对象是否相等
isEqual: function (obj1, obj2) {
return JSON.stringify(Object.entries(obj1).sort()) === JSON.stringify(Object.entries(obj2).sort());
},
// 定义一个函数,用来在数组中查找对象的索引
findIndex: function (arr, obj) {
return arr.findIndex(item => ArgsObj.isEqual(item, obj));
},
moveUp: function (oldList, newList, attr, id) {//oldList是指所有数据,newList是指选中的数据,attr是属性,id这里没有用到可以省略
var arr = [];
var index = 0;
var argsArrIndex = [];//这个存放的是移动后,选中的数据的下表
newList = oldList.filter(item => newList.some(newItem => item[attr] === newItem[attr]));
var indexes = newList.map(item => ArgsObj.findIndex(oldList, item));
//超出边界
if (indexes.some(value => (value == 0)) && ArgsObj.isContinuousArray(indexes)) {
return;
}
if (indexes.some(value => value > 0