我有以下代码通过JS数组进行迭代。当我到达某个特定元素时,我想将其删除。我意识到我可以使用拼接,但是有没有一种方法不需要我跟踪索引:

    myArray.forEach(function (point) {
        canvasContext.clearRect(point.PointX - 3, point.PointY - 3, 6, 6);
        point.PointY++;
        canvasContext.fillRect(point.PointX - 3, point.PointY - 3, 6, 6);

        if (point.PointY > canvas.height) {
            // Remove point

        }
    });

最佳答案

就地修改数组可能很棘手,因此 Array.filter() 可能是更好使用的函数:

myArray = myArray.filter(function (point) {
    canvasContext.clearRect(point.PointX - 3, point.PointY - 3, 6, 6);
    point.PointY++;
    canvasContext.fillRect(point.PointX - 3, point.PointY - 3, 6, 6);

    if (point.PointY > canvas.height) {
        return false;
    }
    return true;
});

它返回一个包含所有元素的数组,该元素的所有回调均返回true

09-26 10:50