Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.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
Jquery 在两个不同的数组中匹配两个项_Jquery_Jvectormap - Fatal编程技术网

Jquery 在两个不同的数组中匹配两个项

Jquery 在两个不同的数组中匹配两个项,jquery,jvectormap,Jquery,Jvectormap,我正在使用Jvectormap,并将一个数组设置为“区域”,以便将国家分组以供选择,这很有效。下一步是为数组中的每个国家指定颜色。因此,我可以为每个数组中的每个国家定义不同的颜色 UK在数组1中可能为粉红色,但在数组2中可能为绿色 另外,我如何分配给单击功能: $("#mp-cyprus-A").click(function(){ $('#world-map').vectorMap('setSelectedRegions', ['areas[1]']); }); 添加区域集的代码,然后

我正在使用Jvectormap,并将一个数组设置为“区域”,以便将国家分组以供选择,这很有效。下一步是为数组中的每个国家指定颜色。因此,我可以为每个数组中的每个国家定义不同的颜色

UK在数组1中可能为粉红色,但在数组2中可能为绿色

另外,我如何分配给单击功能:

$("#mp-cyprus-A").click(function(){
    $('#world-map').vectorMap('setSelectedRegions', ['areas[1]']);
});
添加区域集的代码,然后为每个区域添加颜色集:

  //MAP CONTROLS
$(function(){
  var areas = [];
  areas[0] = [];
  areas[2] = ["FR","BG","DK","HR","DE","BA","XK","CH","EE","IS","AL","IT","CZ","GB","IE","ES","ME","MD","RO","RS","MK","SK","SI","UA","SE","AT"];
  areas[2] = ["BE","FR","BG","DK","HR","DE","BA","HU","FI","BY","GR","NL","PT","NO","LV","LT","LU","XK","CH","EE","IS","AL","IT","CZ","GB","IE","ES","ME","MD","RO","RS","MK","SK","SI","UA","SE","AT"];
  areas[3] = ["CA"];
  areas[4] = ["CA"];
  areas[5] = ["CA"];
  areas[6] = ["CA"];

  function selectArea(code){
    var mapObj = $("#world-map").vectorMap("get", "mapObject");
    areas.forEach(function(area) {
      if(area.indexOf(code)>-1) {
        mapObj.setSelectedRegions(area);
        return;
      }
    });
  }

  function clearAll(){
    var mapObj = $("#world-map").vectorMap("get", "mapObject");
    mapObj.clearSelectedRegions();
  }
部分代码不起作用:为每个“区域”设置数组。如果“areas”和“areacolor”之间的对应数组

向量映射初始化:

$('#world-map').vectorMap({
    map: 'world_mill',
    backgroundColor: '#5288F9',
    markersSelectable:'false',
    regionsSelectableOne: 'false',
    regionsSelectable: 'true',
    regionStyle: {
        initial: {
          fill: "lightgrey"
        },
        selected: {
          fill: "darkseagreen"
        }
      },
    onRegionClick: function(e, code){
        clearAll();
        selectArea(code);
        return false;
      }
    });
应用区域过滤器

    (function () {
      // Collect the rest of the World
      var mapObj = $("#world-map").vectorMap("get", "mapObject");
      var states = areas.join(",");
      for(var code in mapObj.regions) {
        if(mapObj.regions.hasOwnProperty(code)) {
          if(states.indexOf(code) == -1) {
            areas[0].push(code);
          }
        }
      }
    })();
}))

更新:

//MAP CONTROLS
var areacolors0  = {
    'BE': '#4E7387',
    'FR': '#333333',
    'BG': '#89AFBF',
    'DK': '#817F8E',
    'HR': '#344B5E',
    'FI': '#344B5E',
    'BY': '#344B5E',
    'GR': '#344B5E'
  };
  var areacolors1 = {
    'BE': '#000000',
    'FR': '#333333',
    'BG': '#000000',
    'DK': '#817F8E',
    'HR': '#000000',
    'FI': '#344B5E',
    'BY': '#344B5E',
    'GR': '#344B5E'
  };
    $('#world-map').vectorMap({
        map: 'world_mill',
        backgroundColor: '#5288F9',
        markersSelectable:'false',
        regionsSelectableOne: 'false',
        regionsSelectable: 'true',
        regionStyle: {
            initial: {
              fill: "lightgrey"
            },
            selected: {
              fill: "darkseagreen"
            }
          },
          onRegionClick: function (event, code) {
            var map = $('#world-map').vectorMap('get', 'mapObject');
            var name = map.getRegionName(code);
            if(name == GR) {
            map.series.regions[0].setValues(areacolors.GR);      
            }
            if(name == CH) {
                map.series.regions[0].setValues(areacolors1.CH);         
                }


       },
});   

由于数据结构的复杂性,您需要进行更深入的迭代。所以你有:

Array [
  Array [
    Object {
      key: value
    }
  ]
]
因此,要找到与特定值匹配的项,需要迭代初始数组,迭代每个元素中的数组项,并迭代矩阵中的每个对象

我更喜欢使用jQuery
$。each()
,这与
.forEach()
的想法相同

var areacolor=[];
区域颜色[0]=[{
‘BE’:‘4E7387’
},
{
“FR”:“333333”
},
{
“背景”:“89AFBF”
},
{
“DK”:“817F8E”
},
{
“HR”:“344B5E”
},
{
“FI”:“344B5E”
},
{
“作者”:“344B5E”
},
{
“GR”:“344B5E”
}
]
区域颜色[1]=[{
‘BE’:‘4E7387’
},
{
“FR”:“333333”
},
{
“背景”:“89AFBF”
},
{
“DK”:“817F8E”
},
{
“HR”:“344B5E”
},
{
“FI”:“344B5E”
},
{
“作者”:“344B5E”
},
{
“GR”:“344B5E”
}
]
区域颜色[2]=[{
‘BE’:‘4E7387’
},
{
“FR”:“333333”
},
{
“背景”:“89AFBF”
},
{
“DK”:“817F8E”
},
{
“HR”:“344B5E”
},
{
“FI”:“344B5E”
},
{
“作者”:“344B5E”
},
{
“GR”:“344B5E”
}
];
功能选择区域(颜色){
//var mapObj=$(“#世界地图”).vectorMap(“获取”、“映射对象”);
$。每个(区域颜色、功能(k、ac){
日志(“检查区域颜色[“+k+”]”);
$。每个(ac,功能(i,面积){
$。每个(区域、功能(c、clr){
if(clr.indexOf(color)==0){
log(“找到的颜色:“+c+”,“+clr”);
//map.series.regions[0].SetValue(areacolor[0]);
}
});
});
});
}
选择区域(“344B5E”)

不确定你想要完成什么。我看到了您的数组,但您希望在哪个数组中找到什么?我还看到了函数中对
areascolor
的引用,但我看不到在何处定义。我确实看到了
areacolor
。我认为在单击国家或按钮时更改区域颜色会更好(链接到那个国家。没有必要选择国家作为组。我不知道怎么做。我认为你建议的最后一个选项是最好的。只需创建不同的数组并调用。我将玩一玩。非常感谢你,上面也教了我一些东西。我会让你知道我的进展情况。谢谢TwistyPlease查看“更新”上面。我插入了,没有运行。脚本可以吗?@happycoding我没有看到
areacolors
在任何地方定义。我想你的意思是
areacolors0
Array [
  Array [
    Object {
      key: value
    }
  ]
]