美文网首页
2020-12-16

2020-12-16

作者: 孙新强 | 来源:发表于2020-12-16 13:16 被阅读0次

对二维数据连续项进行合并

var data = [ [1,2], [2,3], [3,4] ]
var result = [ [1,4] ]

var data = [ [1,2], [2,3], [5,6], [6,8] ]
var result = [ [1,3], [5,8] ]

实现

  • 循环判断
var a = [ [1,2],[2,3],[4,5]]

function getResult (arr) {
    let res = []
    let start = null
    let end = null
    arr.forEach((item,index) => {
        if (start === null) {
            start = item[0]
            end = item[1]
            return
        }
        if (end == item[0]) {
            end = item[1]
            if (index == arr.length-1) {
                res.push([start, end])
            }
            return
        } 
        if (end != item[0]) {
            res.push([start, end])
           
            start = null
            if (index == arr.length-1) {
                res.push([...item])
            }
        }
    })
    return res
}

getResult(a)
  • 数据拍平,正则替换
function getResult (arr) {
  let res =  arr.flat().join().replace(/(\d+,)\1/g, '').split(',').reduce((res, item) => {
    let last = res[res.length-1]
    if (!last ) {
      res.push([item])
      return res
    }
    if (!last.length) {
      last.push(item)
      return res
    }
    if (last.length == 1) {
      last.push(item)
      res.push([])
      return res
    }
  }, [])

  res.pop() // 删除最后一个空的【】
  return res
}
  • 对象字符串 正则替换
function getResult (arr) {
  return JSON.parse(JSON.stringify(arr).replace(/(\d+)\],\[\1,/g, ''))
}

其他方法 欢迎补充😄

相关文章

网友评论

      本文标题:2020-12-16

      本文链接:https://www.haomeiwen.com/subject/jpmngktx.html