前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >数组比较函数 ArrayDiff

数组比较函数 ArrayDiff

作者头像
copy_left
发布2022-12-18 18:04:57
6380
发布2022-12-18 18:04:57
举报
文章被收录于专栏:方球方球
代码语言:javascript
复制
function defaultCheck (source, target) {
  return source === target
}

const MAX_RANGE = 10000

/**
 * 数组数据比对
 * @summary
 * 比较数组差异,筛选出:
 *  1.相同项 ( 未改变 )
 *  2.旧的不同项 (已删除)
 *  3.新加入项 (新添加)
 * 用于多选数组数据比较
 * 注意:限制了最大便利数 MAX_RANGE
 * @param {*} oldList 旧数据
 * @param {*} newList 新数据
 * @param {*} check 校验函数
 * @returns
 * - someList
 * - invalidList
 * - addList
 */
export default function arrayDiffe (oldList = [], newList = [], check = defaultCheck) {
  let count = MAX_RANGE
  const nList = [...newList]
  const oList = [...oldList]

  const someList = []
  const invalidList = []
  while (oList.length && !!count) {
    count -= 1
    const current = oList.pop()
    const index = nList.findIndex(i => check(i, current))
    if (index !== -1) {
      nList.splice(index, index)
      someList.push(current)
      continue
    }
    invalidList.push(current)
  }

  return {
    someList,
    invalidList,
    addList: nList
  }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2022-12-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档