我正在处理类似应用程序的多页绘画,有一个“清除”按钮。当用户按下时,我希望清除该页面上绘制的所有形状。以下是清除按钮后面的代码。

clear.addEventListener('click', function (e) {
        canvas.width = canvas.width;
        tempCanvas.width = tempCanvas.width;
        var tempShapes = shapes.slice();
        alert(tempShapes.length);
        for(var i=0; i<tempShapes.length; i++)
        {

            var A = tempShapes[i];
            if(A.pageNum == pNum)
            {
                alert('in');
                shapes.splice(i, 1);
            }
        }
        //shapes.length = 0;
        e.preventDefault();
    }


shapes[]是包含所有页面的完整对象的数组。我只想删除具有当前页码(pNum)的那些。代码运行时,它将在shape数组中为该特定页面保留一个元素,有时还会保留两个元素。我希望删除该特定页面的所有形状数组元素。

最佳答案

您可能会发现Array.filter对于此任务更有用,例如:

shapes = shapes.filter(function(shape, i) {
    return tempShapes[i].pageNum != pnum;
})

09-11 19:03