用于合并相同id的某个值数据
几个注意点详解
- JSON.parse(JSON.stringify(parentData)) 当前函数是为了避免直接改动原数据
- 第一个for是为了取数据,第二个for是为了遍历后面还有哪些数据是相等的
- 通过函数传递的id和key值进行相同项判断,以及合并数据
- y -= 1,因为data.splice(y, 1)去除了当前项,所以需要把y的序号往下改1,便于y++访问到删除一个元素时它的后一个元素
function setData(parentData, id = 'id', key = 'key'){
  if (!Array.isArray(parentData)) { // 判断是否是数组形式,不是,则抛出异常
    throw new Error('parentData is not a array')
  }
  let data = JSON.parse(JSON.stringify(parentData))
  for (let i = 0; i < data.length; i++) {
     for (let y = i + 1; y < data.length; y++) {
       if (data[y][id] === data[i][id]) {
          data[i][key] = Number(data[i][key]) + Number(data[y][key])
          data.splice(y, 1)
          y -= 1
       }
     }
  }
  return data
}支持的数据调用说明
const data = [
  { id: 1, num: 20 },
  { id: 2, num: 10 },
  { id: 1, num: 5 },
  { id: 1, num: 20 }
]
const data1 = setData(data, 'id', 'num')
// data1 = [{ id: 1, num: 45 }, { id: 2, num: 10 }]
 
	
												  
						 粤公网安备 44060502003457号
				粤公网安备 44060502003457号
			