JavaScript 代码优化:使用 Set 和 push 方法提升效率
comfirmEdit(obj) { // 绘制的数据:obj.newData // 遍历newData数组,将矩形转换为像素点并存储到newPixelData数组中,同时过滤掉与deletePixelSet相同的像素点 var newPixelData = []; for (let i = 0; i < obj.newData.length; i++) { var pixelData = this.getPointData1(obj.newData[i]); newPixelData.push(...pixelData); }
// 擦除的数据:obj.delData var deletePixelSet = new Set(); // 使用集合存储 deletePixelSet for (let i = 0; i < obj.delData.length; i++) { var pixelData = this.getPointData(obj.delData[i]); pixelData.forEach(pixel => { var pixelKey = pixel.x + ',' + pixel.y; deletePixelSet.add(pixelKey); }); }
// 原数据bmap:imgCircle过滤掉擦除的一些像素值 this.imgCircle = this.imgCircle.filter(pixel => { var pixelKey = Math.floor(pixel.x + this.imgRect.x) + ',' + Math.floor(pixel.y + this.imgRect.y); return !deletePixelSet.has(pixelKey); })
// 绘制的数据:obj.newData过滤掉擦除的一些像素值 newPixelData = newPixelData.filter(pixel => { var pixelKey = Math.floor(pixel.x + this.imgRect.x) + ',' + Math.floor(pixel.y + this.imgRect.y); return !deletePixelSet.has(pixelKey); })
this.imgCircle.push(...newPixelData); }, // 获取矩形中每个像素点的坐标 getPointData(rect) { var x = rect.attrs.x; var y = rect.attrs.y; var W = rect.attrs.width; var H = rect.attrs.height; var pixelData = []; for (let i = x; i < x + W; i++) { for (let j = y; j < y + H; j++) { // (i, j) 是矩形中的一个像素点的坐标 pixelData.push({ x: i, y: j }); } } return pixelData; }, // 获取矩形中每个像素点的坐标 getPointData1(rect) { var x = rect.attrs.x; var y = rect.attrs.y; var W = rect.attrs.width; var H = rect.attrs.height; var pixelData = []; for (let i = x; i < x + W; i++) { for (let j = y; j < y + H; j++) { // (i, j) 是矩形中的一个像素点的坐标 pixelData.push({ x: i - this.imgRect.x, y: j - this.imgRect.y }); } } return pixelData; }
原文地址: https://www.cveoy.top/t/topic/pknb 著作权归作者所有。请勿转载和采集!