工具函数系列-查找有效位

有效位定义:当前数组中有效的位置。

函数功能:找到当前数组中未被过滤的位置。

从后向前查找有效位

给定数组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())