明确的点
获取序号数组,如果有缺失正整数,则获取最小缺失正整数作为序号
如果没有缺失,则获取序号最大值+1作为新的序号
每次生成新序号需要push到序号数组
每次移除数据,需要删除序号数组中对应值的一条记录
1 获取序号数组
//记录序号的数组
const sortList = ref([])//更新操作时,从后台获取数据将其序号push到数组中
sortList.value = formData.value.serialConfigS.map(config => config.sort)
2 判断是否有缺失值
/*** 获取数据中缺失的第一个正整数* @param arr 数组内容* @returns*/firstMissingPositive : (nums:any) =>{for (let i = 0; i < nums.length; i++) {while (nums[i] >= 1 && nums[i] < nums.length && nums[i] != nums[nums[i] - 1]) { //while里面放置 下标i 的元素var tmp = nums[nums[i] - 1]nums[nums[i] - 1] = nums[i]nums[i] = tmp}}for (let i = 0; i < nums.length; i++) { //遍历判断if (nums[i] != i + 1) {return i + 1}}return nums.length + 1}
3 没有缺失值时
sort = Math.max(...sortList.value)+1
4 生成序号后
sortList.value.push(sort)
5 删除对应数据时
const removeDomain = (item) => {const index = formData.value.serialConfigS.indexOf(item)if (index !== -1) {formData.value.serialConfigS.splice(index, 1)}//删除一个sortList中相同值sortList.value.splice(sortList.value.findIndex(num => num === item.sort),1)
}