Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.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
Javascript的切片不工作_Javascript - Fatal编程技术网

Javascript的切片不工作

Javascript的切片不工作,javascript,Javascript,我在PHP文件中声明了一些全局变量: var coordinates = []; var joined_data = []; 变量坐标最初是用从XMLHttpRequest接收的一些数据设置的,连接的数据被设置为等于坐标。 稍后,将调用一个函数: function addMarkerToWps(wp_id) { joined_data = coordinates.slice(0, coordinates.length-5); calculateRoutes(); } 这段短

我在PHP文件中声明了一些全局变量:

var coordinates = [];
var joined_data = [];
变量坐标最初是用从XMLHttpRequest接收的一些数据设置的,连接的数据被设置为等于坐标。 稍后,将调用一个函数:

function addMarkerToWps(wp_id)
{
    joined_data = coordinates.slice(0, coordinates.length-5);
    calculateRoutes();

}
这段短代码应该选择一个子数组并将其保存到联合_数据中;函数CalculatorOutes使用Google API在地图上绘制路径;在这个函数的末尾,我尝试显示两个数组的长度,我希望连接的数据比坐标短,但我发现它们的大小相同。 所以,我怀疑slice函数以某种方式失败了。 以下是函数CalculatorOutes:


你能发现错误吗?谢谢。

我们需要一些代码来发现错误。你能用小提琴再现这个问题吗?请参阅切片功能没有失败。我的感觉是。。您请求的数组长度没有那么长。。表示如果数组长度为3。。你把它限制在3-5。也就是-2。。无法索引和切片..我也尝试了coordinates.length-5,因为知道它应该可以工作,因为coordinates数组最初有8个元素,但没有任何更改。关于我的问题,坐标数组包含一组要在地图上显示的坐标。现在,我试图在地图上只显示坐标的子集,在给定的代码中没有太可疑的东西。对于调试,可以添加console.logcoordinates.length、joined_data.length;在调用CalculatorOutes之前添加到addMarkerToWps中的第二行;对于第一行计算器,你们从中得到了什么结果?作为一种可能的解释,变量作用域可能会导致这种行为,但如果看不到完整的代码,就无法判断。@ameenulla0007-也可以在切片中使用负索引,从数组末尾进行选择。所以语法是正确的,在任何情况下都应该返回比原始数组短的新数组。我们需要一些代码来发现错误。你能用小提琴再现这个问题吗?请参阅切片功能没有失败。我的感觉是。。您请求的数组长度没有那么长。。表示如果数组长度为3。。你把它限制在3-5。也就是-2。。无法索引和切片..我也尝试了coordinates.length-5,因为知道它应该可以工作,因为coordinates数组最初有8个元素,但没有任何更改。关于我的问题,坐标数组包含一组要在地图上显示的坐标。现在,我试图在地图上只显示坐标的子集,在给定的代码中没有太可疑的东西。对于调试,可以添加console.logcoordinates.length、joined_data.length;在调用CalculatorOutes之前添加到addMarkerToWps中的第二行;对于第一行计算器,你们从中得到了什么结果?作为一种可能的解释,变量作用域可能会导致这种行为,但如果看不到完整的代码,就无法判断。@ameenulla0007-也可以在切片中使用负索引,从数组末尾进行选择。所以语法是正确的,在任何情况下都应该返回比原始数组短的新数组。
function calculateRoutes()
{
    // remove previous route
    removeRoutes();
    //window.alert('Numero punti ' + coordinates.length);

    // set start position
    //var begin = new google.maps.LatLng(coordinates[0].Lat, coordinates[0].Lon);
    var begin = new google.maps.LatLng(joined_data[0].Lat, joined_data[0].Lon);

    // set end position
    var end = null;

    // waypoints struct
    var waypoints = [];

    // counter
    var wCount = 0;

    // loop
    var i;
    //for(i=1; i<coordinates.length-1; i++)
    for(i=1; i<joined_data.length-1; i++)
    {
        if(wCount === REQUEST_WAYPOINTS_LIMIT)
        {
            // increment counter to get end's index
            i++;

            // set end
            //end = new google.maps.LatLng(coordinates[i].Lat, coordinates[i].Lon);
            end = new google.maps.LatLng(joined_data[i].Lat, joined_data[i].Lon);

            // draw current route
            drawRoute(begin, end, waypoints);

            // update indeces
            begin = end;

            // reset structures
            wCount = 0;
            waypoints = [];
        }

        // add waypoint to list
        waypoints.push
        (
            {
                //location: new google.maps.LatLng(coordinates[i].Lat, coordinates[i].Lon),
                location: new google.maps.LatLng(joined_data[i].Lat, joined_data[i].Lon),
                stopover: true
            }
        );

        // increments counter
        wCount++;
    }

    if(waypoints.length > 0)
    {
        //end = new google.maps.LatLng(coordinates[coordinates.length-1].Lat, coordinates[coordinates.length-1].Lon);
        end = new google.maps.LatLng(joined_data[joined_data.length-1].Lat, joined_data[joined_data.length-1].Lon);
        drawRoute(begin, end, waypoints);
    }

    for(var i = 0; i<coordinates.length; i++)
    {
        placeMarker(coordinates[i].Lat, coordinates[i].Lon, "http://gmaps-samples.googlecode.com/svn/trunk/markers/red/blank.png");
    }

    for(var j = 0; j<interest_points.length; j++)
    {
        placeAttractionMarker(
            interest_points[j].Lat,
            interest_points[j].Lon,
            "http://gmaps-samples.googlecode.com/svn/trunk/markers/orange/blank.png",
            interest_points[j].Name,
            interest_points[j].Wikipedia,
            j

        );
    }

    //joinData();
    //window.alert("" + coordinates.length + " " + interest_points.length + " " + joined_data.length);
    window.alert("" + coordinates.length + " " + joined_data.length);


}