对二维数据连续项进行合并
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, ''))
}
其他方法 欢迎补充😄