Javascript 多维数组关联

Javascript 多维数组关联,javascript,arrays,multidimensional-array,Javascript,Arrays,Multidimensional Array,我有两个数组,routesFeatures和stopsFeatures,它们分别包含车辆路线的属性和每个站点的属性。它们通过名称属性相互关联,这意味着如果stopsFeatures中任何条目中的RouteName属性与RouteFeatures中任何条目中的name属性匹配,则表示停车点属于该路线。 现在,在代码方面,我正在尝试进行这种匹配,并将它们放在一个二维数组中,其中每个索引都是一个路由,在该索引中有相应的站点 这是routesFeatures: [{ 目标1,, 姓名:“Rota 1”

我有两个数组,routesFeatures和stopsFeatures,它们分别包含车辆路线的属性和每个站点的属性。它们通过名称属性相互关联,这意味着如果stopsFeatures中任何条目中的RouteName属性与RouteFeatures中任何条目中的name属性匹配,则表示停车点属于该路线。 现在,在代码方面,我正在尝试进行这种匹配,并将它们放在一个二维数组中,其中每个索引都是一个路由,在该索引中有相应的站点

这是routesFeatures:

[{
目标1,,
姓名:“Rota 1”
},
{
目标二,,
名称:“Rota 2”
},
...
]
这是Stops功能:

[{
目标1,,
名称:“Carga 0”,
RouteName:“Rota 2”
},
{
目标二,,
名称:“描述0”,
RouteName:“Rota 2”
},
...,
{
目标:11,
名称:“卡加5号”,
RouteName:“Rota 4”
},
...
]
这是我的职责:

function drawRoutesOptimized(routesFeatures, stopsFeatures){
    var stopsRoutes = [[]];
    for(var i=0; i<routesFeatures.length; i++){
        // draw some stuff on screen
        var count = 0;
        for(var j=0; j<stopsFeatures.length; j++){
            if(stopsFeatures[j].attributes.RouteName == routesFeatures[i].attributes.Name){
                stopsRoutes[i][count] = stopsFeatures[j].attributes.Name;
                count++;
            }
        }
    }
}
在我看来,这应该行得通,但我得到了: 未捕获(承诺中)类型错误:无法设置未定义的属性“0”
当i变成值1时,从逻辑上讲,它是非常直接的

  • 环行路线
  • 每条路线,循环通过站点
  • 添加与路线匹配的
    RouteName
    站点
  • 这不是最优化的解决方案,但它很有效。请记住,我正在使用将每个路由初始化为数组

    const routes功能=[{
    目标1,,
    姓名:“Rota 1”
    },
    {
    目标二,,
    名称:“Rota 2”
    },
    ];
    常数停止特征=[{
    目标1,,
    名称:“Carga 0”,
    RouteName:“Rota 2”
    },
    {
    目标二,,
    名称:“描述0”,
    RouteName:“Rota 2”
    },
    {
    目标:11,
    名称:“卡加5号”,
    RouteName:“Rota 4”
    },
    ];
    const result=RouteFeatures.reduce((acc,routeFeature)=>{
    acc.push(停止功能减少)(_acc,停止功能)=>{
    if(stopFeature.RouteName==routeFeature.Name){
    _acc.push(停止功能。路线名称)
    }
    返回acc;
    }, []))
    返回acc
    }, []);
    
    控制台日志(结果)从逻辑上讲,这很简单

  • 环行路线
  • 每条路线,循环通过站点
  • 添加与路线匹配的
    RouteName
    站点
  • 这不是最优化的解决方案,但它很有效。请记住,我正在使用将每个路由初始化为数组

    const routes功能=[{
    目标1,,
    姓名:“Rota 1”
    },
    {
    目标二,,
    名称:“Rota 2”
    },
    ];
    常数停止特征=[{
    目标1,,
    名称:“Carga 0”,
    RouteName:“Rota 2”
    },
    {
    目标二,,
    名称:“描述0”,
    RouteName:“Rota 2”
    },
    {
    目标:11,
    名称:“卡加5号”,
    RouteName:“Rota 4”
    },
    ];
    const result=RouteFeatures.reduce((acc,routeFeature)=>{
    acc.push(停止功能减少)(_acc,停止功能)=>{
    if(stopFeature.RouteName==routeFeature.Name){
    _acc.push(停止功能。路线名称)
    }
    返回acc;
    }, []))
    返回acc
    }, []);
    
    控制台日志(结果)实际上并不确定您想要什么,我删除了attributes param,使其在代码段中工作。当路由无法将数据推送到数组中时,您将无法声明子数组

    让routesFeatures=[{
    目标1,,
    姓名:“Rota 1”
    },
    {
    目标二,,
    名称:“Rota 2”
    }
    ]
    让停止功能=[{
    目标1,,
    名称:“Carga 0”,
    RouteName:“Rota 2”
    },
    {
    目标二,,
    名称:“描述0”,
    RouteName:“Rota 2”
    }
    ]
    功能绘图路线优化(路线功能、停止功能){
    var stopsRoutes=[];
    
    对于(var i=0;i来说,我不太确定您实际上想要什么,我删除了attributes param以使其在代码段中工作。您没有声明子数组,因此当路由无法将数据推送到数组中时

    让routesFeatures=[{
    目标1,,
    姓名:“Rota 1”
    },
    {
    目标二,,
    名称:“Rota 2”
    }
    ]
    让停止功能=[{
    目标1,,
    名称:“Carga 0”,
    RouteName:“Rota 2”
    },
    {
    目标二,,
    名称:“描述0”,
    RouteName:“Rota 2”
    }
    ]
    功能绘图路线优化(路线功能、停止功能){
    var stopsRoutes=[];
    
    对于(var i=0;你能举个例子说明你希望数据是什么样子吗?最好是JSON格式。我会用一个例子更新我的问题,但这是我想要的,我的函数会得到,但它只在i为0时运行,当我递增时崩溃并给出问题中的错误。你在乎列表中是否有重复项吗?e、 g.罐装“卡加2”在列表中出现两次?重复项很好,我认为这与在写入之前需要为
    stopRoutes
    预留空间有关。您能给出一个示例,说明您希望数据是什么样子吗?最好是JSON格式。我将用一个示例更新我的问题,但这是我想要的,并且我的函数可以得到,但它仅在当i为0时,它崩溃并在i递增时给出问题中的错误。您是否关心列表中是否有重复项?例如,can“Carga 2”在列表中出现两次?重复项很好,我认为这与在写入之前需要为
    stopRoutes
    预留空间有关。这很好。非常感谢,我将研究reduce()在将来将这些类型的匹配转换为不同的数组,而不是我的操作方式。继续并添加了for循环。这非常有效。非常感谢,我将研究reduce()将来,我要将这些类型的匹配转换为不同的数组,而不是我的操作方式。我继续并添加了一个for循环。我知道,我最初缺少的只是stopsRoutes[I]=[];谢谢。我知道,我最初缺少的只是stopsRoutes[I]=[];谢谢。
    [0]
        [0] "Carga 2"
        [1] "Descarga 2"
        [2] "Carga 6"
        [3] "Descarga 6"
        [4] "Carga 7"
        [5] "Descarga 7"