Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用嵌套for和splice的Javascript_Javascript_Arrays_For Loop - Fatal编程技术网

使用嵌套for和splice的Javascript

使用嵌套for和splice的Javascript,javascript,arrays,for-loop,Javascript,Arrays,For Loop,我也在努力寻找多边形中的点 我有一个点对象数组和一个多边形对象数组 我想迭代我的点数组,然后迭代多边形数组,看看该点是否在该数组中。如果点在数组中,我想从点数组中删除该点,因为一个点只能在一个多边形中 所以我试着使用这个函数: function pointsInPolygons(features, points) { var pointCopy = $.extend(true, [], points.features); for (var i = 0; i < pointC

我也在努力寻找多边形中的点

我有一个点对象数组和一个多边形对象数组

我想迭代我的点数组,然后迭代多边形数组,看看该点是否在该数组中。如果点在数组中,我想从点数组中删除该点,因为一个点只能在一个多边形中

所以我试着使用这个函数:

function pointsInPolygons(features, points) {
    var pointCopy = $.extend(true, [], points.features);
    for (var i = 0; i < pointCopy.length; i++) {
        var point = pointCopy[i];
        for (var j = 0; j < features.features.length; j++) {
            var feature = features.features[j];
            if (isPoly(feature) && gju.pointInPolygon(point.geometry, feature.geometry)) {
                feature.properties.ratings.push(point.properties.rating);
                pointCopy.splice(i, 1);
                i--;
            }
        }
    }
}
功能点多边形(特征、点){
var pointCopy=$.extend(true,[],points.features);
对于(var i=0;i
但在经过内部for之后,函数将离开。我也尝试了同样的方法,没有拼接和减少I。但这仍然是同样的行为


所以问题是我怎样才能再次进入外层空间

实际上,您不必从数组中删除该项,当前针对
点的for循环只会迭代一次。这里有一个扁平化的方法来描述你正在做的事情

function pointsInPolygons(features, points){
  let pointsCopy = points.features.slice();
  let check = (point,feature) => isPoly(feature) && gju.pointInPolygon(point.geometry, feature.geometry);
  let isInPolygon = point => features.find(check.bind(null, point));

  pointsCopy.forEach(point => {
    let feature = isInPolygon(point);
    if (!!feature) {
      feature.properties.ratings.push(point.properties.rating);
    }
  });
}

在刚刚完成拼接的地方,是否希望
中断
跳出内环并继续外环的下一次迭代?是的,这就是我想要的,所以…我要说的是添加
中断紧跟在
i--之后语句(在
if
块中)。我现在尝试了很多。它在有休息和没有休息的情况下工作。但我的错误在另一个地方。我的testdata的第二个对象是错误的。所以这个函数不能工作。感谢您的提示。在外部循环中向后迭代:
for(var i=pointCopy.length-1;i>=0;i--)
,避免在内部循环中使用
i--