工具函数系列-查找有效位
有效位定义:当前数组中有效的位置。
函数功能:找到当前数组中未被过滤的位置。
从后向前查找有效位
给定数组index和过滤元素的index
考虑:是否最后连续过滤值,不连续情况。
const list = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
const filterIds = [7, 8, 9]
// 从后往前找
function findBackValid(last = list.length - 1, previous = filterIds.pop(), current = previous) {
console.log(last, previous, current)
// 如果当前的index 等于最后一个 往前找
if (current === last) {
previous = current // 保存当前值
current = filterIds.pop()
last -= 1
return findBackValid(last, previous, current)
}
// 当前的index 不等于最后一个index 判断和上一个是否是连续的index
const next = previous - 1
if (next === current) {
// 是连续的index 返回最前面的index
return next - 1
}
// 不是连续的index 就返回中间的
return next
}
console.log(findBackValid())