用于合并具有匹配字段的两个对象的通用javascript函数

时间:2014-02-19 13:51:04

标签: javascript json d3.js

说明

我一直在使用d3.js,我真的很喜欢.data和.enter。为了忠于数据驱动的dom原则,我将单独的json对象组合成一个单独的javascript对象。为此,我写了一个函数。这篇文章包含了jsons和我编写的javascript函数的一部分。

问题

然而,我遇到了一个问题。在我的函数的底部,我有一个完全不通用的代码。

data_news.objects.countries.geometries = data_main_dict;

如何在函数中使用此([“objects”,“countries”,“geometry”“])参数,以便在对象中选择该位置并附加”data_news“对象。我不知道如何解决这个问题。我希望有人可以为我和其他许多人提供帮助。

Jsons

国家/地区名称,代码和iso。 (部分内容(限制为30000个字符))

[
  {
    "name": "Afghanistan",
    "iso2": "AF",
    "iso3": "AFG",
    "code": 4
  },
  {
    "name": "AlandIslands",
    "iso2": "AX",
    "iso3": "ALA",
    "code": 248
  },
  {
    "name": "Albania",
    "iso2": "AL",
    "iso3": "ALB",
    "code": 8
  },
  {
    "name": "Algeria",
    "iso2": "DZ",
    "iso3": "DZA",
    "code": 12
  },
  {
    "name": "AmericanSamoa",
    "iso2": "AS",
    "iso3": "ASM",
    "code": 16
  },
  {
    "name": "Andorra",
    "iso2": "AD",
    "iso3": "AND",
    "code": 20
  },
  {
    "name": "Angola",
    "iso2": "AO",
    "iso3": "AGO",
    "code": 24
  },
  {
    "name": "Anguilla",
    "iso2": "AI",
    "iso3": "AIA",
    "code": 660
  },
  {
    "name": "BruneiDarussalam",
    "iso2": "BN",
    "iso3": "BRN",
    "code": 96
  },
  {
    "name": "Bulgaria",
    "iso2": "BG",
    "iso3": "BGR",
    "code": 100
  },
  {
    "name": "BurkinaFaso",
    "iso2": "BF",
    "iso3": "BFA",
    "code": 854
  },
  {
    "name": "Burundi",
    "iso2": "BI",
    "iso3": "BDI",
    "code": 108
  },
  {
    "name": "Cambodia",
    "iso2": "KH",
    "iso3": "KHM",
    "code": 116
  },
  {
    "name": "Cameroon",
    "iso2": "CM",
    "iso3": "CMR",
    "code": 120
  },
  {
    "name": "Canada",
    "iso2": "CA",
    "iso3": "CAN",
    "code": 124
  },
  {
    "name": "CapeVerde",
    "iso2": "CV",
    "iso3": "CPV",
    "code": 132
  },
  {
    "name": "CaymanIslands",
    "iso2": "KY",
    "iso3": "CYM",
    "code": 136
  },
  {
    "name": "CentralAfricanRepublic",
    "iso2": "CF",
    "iso3": "CAF",
    "code": 140
  },
  {
    "name": "Chad",
    "iso2": "TD",
    "iso3": "TCD",
    "code": 148
  },
  {
    "name": "Chile",
    "iso2": "CL",
    "iso3": "CHL",
    "code": 152
  },
  {
    "name": "China",
    "iso2": "CN",
    "iso3": "CHN",
    "code": 156
  },
  {
    "name": "HongKong,SpecialAdministrativeRegionofChina",
    "iso2": "HK",
    "iso3": "HKG",
    "code": 344
  },
  {
    "name": "Macao,SpecialAdministrativeRegionofChina",
    "iso2": "MO",
    "iso3": "MAC",
    "code": 446
  },
  {
    "name": "ChristmasIsland",
    "iso2": "CX",
    "iso3": "CXR",
    "code": 162
  },
  {
    "name": "Cocos(Keeling)Islands",
    "iso2": "CC",
    "iso3": "CCK",
    "code": 166
  },
  {
    "name": "Colombia",
    "iso2": "CO",
    "iso3": "COL",
    "code": 170
  },
  {
    "name": "Comoros",
    "iso2": "KM",
    "iso3": "COM",
    "code": 174
  },
  {
    "name": "Congo(Brazzaville)",
    "iso2": "CG",
    "iso3": "COG",
    "code": 178
  },
  {
    "name": "Congo,DemocraticRepublicofthe",
    "iso2": "CD",
    "iso3": "COD",
    "code": 180
  },
  {
    "name": "CookIslands",
    "iso2": "CK",
    "iso3": "COK",
    "code": 184
  },
  {
    "name": "CostaRica",
    "iso2": "CR",
    "iso3": "CRI",
    "code": 188
  },
  {
    "name": "CôtedIvoire",
    "iso2": "CI",
    "iso3": "CIV",
    "code": 384
  },
  {
    "name": "Croatia",
    "iso2": "HR",
    "iso3": "HRV",
    "code": 191
  },
  {
    "name": "Cuba",
    "iso2": "CU",
    "iso3": "CUB",
    "code": 192
  },
  {
    "name": "Cyprus",
    "iso2": "CY",
    "iso3": "CYP",
    "code": 196
  },
  {
    "name": "CzechRepublic",
    "iso2": "CZ",
    "iso3": "CZE",
    "code": 203
  },
  {
    "name": "Denmark",
    "iso2": "DK",
    "iso3": "DNK",
    "code": 208
  },
  {
    "name": "Djibouti",
    "iso2": "DJ",
    "iso3": "DJI",
    "code": 262
  },
  {
    "name": "Dominica",
    "iso2": "DM",
    "iso3": "DMA",
    "code": 212
  },
  {
    "name": "DominicanRepublic",
    "iso2": "DO",
    "iso3": "DOM",
    "code": 214
  },
  {
    "name": "Ecuador",
    "iso2": "EC",
    "iso3": "ECU",
    "code": 218
  },
  {
    "name": "Egypt",
    "iso2": "EG",
    "iso3": "EGY",
    "code": 818
  },
  {
    "name": "ElSalvador",
    "iso2": "SV",
    "iso3": "SLV",
    "code": 222
  },
  {
    "name": "EquatorialGuinea",
    "iso2": "GQ",
    "iso3": "GNQ",
    "code": 226
  },
  {
    "name": "Eritrea",
    "iso2": "ER",
    "iso3": "ERI",
    "code": 232
  },
  {
    "name": "Estonia",
    "iso2": "EE",
    "iso3": "EST",
    "code": 233
  },
  {
    "name": "Ethiopia",
    "iso2": "ET",
    "iso3": "ETH",
    "code": 231
  },
  {
    "name": "FalklandIslands(Malvinas)",
    "iso2": "FK",
    "iso3": "FLK",
    "code": 238
  },
  {
    "name": "FaroeIslands",
    "iso2": "FO",
    "iso3": "FRO",
    "code": 234
  },
  {
    "name": "Fiji",
    "iso2": "FJ",
    "iso3": "FJI",
    "code": 242
  },
  {
    "name": "Finland",
    "iso2": "FI",
    "iso3": "FIN",
    "code": 246
  },
  {
    "name": "France",
    "iso2": "FR",
    "iso3": "FRA",
    "code": 250
  },
  {
    "name": "FrenchGuiana",
    "iso2": "GF",
    "iso3": "GUF",
    "code": 254
  },
  {
    "name": "FrenchPolynesia",
    "iso2": "PF",
    "iso3": "PYF",
    "code": 258
  },
  {
    "name": "FrenchSouthernTerritories",
    "iso2": "TF",
    "iso3": "ATF",
    "code": 260
  },
  {
    "name": "Gabon",
    "iso2": "GA",
    "iso3": "GAB",
    "code": 266
  },
  {
    "name": "Gambia",
    "iso2": "GM",
    "iso3": "GMB",
    "code": 270
  },
  {
    "name": "Georgia",
    "iso2": "GE",
    "iso3": "GEO",
    "code": 268
  },
  {
    "name": "Germany",
    "iso2": "DE",
    "iso3": "DEU",
    "code": 276
  },
  {
    "name": "Ghana",
    "iso2": "GH",
    "iso3": "GHA",
    "code": 288
  },
  {
    "name": "Gibraltar",
    "iso2": "GI",
    "iso3": "GIB",
    "code": 292
  },
  {
    "name": "Greece",
    "iso2": "GR",
    "iso3": "GRC",
    "code": 300
  },
  {
    "name": "Greenland",
    "iso2": "GL",
    "iso3": "GRL",
    "code": 304
  },
  {
    "name": "Grenada",
    "iso2": "GD",
    "iso3": "GRD",
    "code": 308
  },
  {
    "name": "Guadeloupe",
    "iso2": "GP",
    "iso3": "GLP",
    "code": 312
  },
  {
    "name": "Guam",
    "iso2": "GU",
    "iso3": "GUM",
    "code": 316
  },
  {
    "name": "Guatemala",
    "iso2": "GT",
    "iso3": "GTM",
    "code": 320
  },
  {
    "name": "Guernsey",
    "iso2": "GG",
    "iso3": "GGY",
    "code": 831
  },
  {
    "name": "Guinea",
    "iso2": "GN",
    "iso3": "GIN",
    "code": 324
  },
  {
    "name": "Guinea-Bissau",
    "iso2": "GW",
    "iso3": "GNB",
    "code": 624
  },
  {
    "name": "Guyana",
    "iso2": "GY",
    "iso3": "GUY",
    "code": 328
  },
  {
    "name": "Haiti",
    "iso2": "HT",
    "iso3": "HTI",
    "code": 332
  },
  {
    "name": "HeardIslandandMcdonaldIslands",
    "iso2": "HM",
    "iso3": "HMD",
    "code": 334
  },
  {
    "name": "HolySee(VaticanCityState)",
    "iso2": "VA",
    "iso3": "VAT",
    "code": 336
  },
  {
    "name": "Honduras",
    "iso2": "HN",
    "iso3": "HND",
    "code": 340
  },
  {
    "name": "Hungary",
    "iso2": "HU",
    "iso3": "HUN",
    "code": 348
  },
  {
    "name": "Iceland",
    "iso2": "IS",
    "iso3": "ISL",
    "code": 352
  },
  {
    "name": "India",
    "iso2": "IN",
    "iso3": "IND",
    "code": 356
  },
  {
    "name": "Indonesia",
    "iso2": "ID",
    "iso3": "IDN",
    "code": 360
  },
  {
    "name": "Iran,IslamicRepublicof",
    "iso2": "IR",
    "iso3": "IRN",
    "code": 364
  },
  {
    "name": "Iraq",
    "iso2": "IQ",
    "iso3": "IRQ",
    "code": 368
  },
  {
    "name": "Ireland",
    "iso2": "IE",
    "iso3": "IRL",
    "code": 372
  },
  {
    "name": "IsleofMan",
    "iso2": "IM",
    "iso3": "IMN",
    "code": 833
  },
  {
    "name": "Israel",
    "iso2": "IL",
    "iso3": "ISR",
    "code": 376
  },
  {
    "name": "Italy",
    "iso2": "IT",
    "iso3": "ITA",
    "code": 380
  },
  {
    "name": "Jamaica",
    "iso2": "JM",
    "iso3": "JAM",
    "code": 388
  },
  {
    "name": "Japan",
    "iso2": "JP",
    "iso3": "JPN",
    "code": 392
  },
  {
    "name": "Jersey",
    "iso2": "JE",
    "iso3": "JEY",
    "code": 832
  },
  {
    "name": "Jordan",
    "iso2": "JO",
    "iso3": "JOR",
    "code": 400
  },
  {
    "name": "Kazakhstan",
    "iso2": "KZ",
    "iso3": "KAZ",
    "code": 398
  },
  {
    "name": "Kenya",
    "iso2": "KE",
    "iso3": "KEN",
    "code": 404
  },
  {
    "name": "Kiribati",
    "iso2": "KI",
    "iso3": "KIR",
    "code": 296
  },
  {
    "name": "Korea,DemocraticPeoplesRepublicof",
    "iso2": "KP",
    "iso3": "PRK",
    "code": 408
  },
  {
    "name": "Korea,Republicof",
    "iso2": "KR",
    "iso3": "KOR",
    "code": 410
  },
  {
    "name": "Kuwait",
    "iso2": "KW",
    "iso3": "KWT",
    "code": 414
  },
  {
    "name": "Kyrgyzstan",
    "iso2": "KG",
    "iso3": "KGZ",
    "code": 417
  },
  {
    "name": "LaoPDR",
    "iso2": "LA",
    "iso3": "LAO",
    "code": 418
  },
  {
    "name": "Latvia",
    "iso2": "LV",
    "iso3": "LVA",
    "code": 428
  },
  {
    "name": "Lebanon",
    "iso2": "LB",
    "iso3": "LBN",
    "code": 422
  },
  {
    "name": "Lesotho",
    "iso2": "LS",
    "iso3": "LSO",
    "code": 426
  },
  {
    "name": "Liberia",
    "iso2": "LR",
    "iso3": "LBR",
    "code": 430
  },
  {
    "name": "Libya",
    "iso2": "LY",
    "iso3": "LBY",
    "code": 434
  },
  {
    "name": "Liechtenstein",
    "iso2": "LI",
    "iso3": "LIE",
    "code": 438
  },
  {
    "name": "Lithuania",
    "iso2": "LT",
    "iso3": "LTU",
    "code": 440
  },
  {
    "name": "Luxembourg",
    "iso2": "LU",
    "iso3": "LUX",
    "code": 442
  },
  {
    "name": "Macedonia,Republicof",
    "iso2": "MK",
    "iso3": "MKD",
    "code": 807
  },
  {
    "name": "Madagascar",
    "iso2": "MG",
    "iso3": "MDG",
    "code": 450
  },
  {
    "name": "Malawi",
    "iso2": "MW",
    "iso3": "MWI",
    "code": 454
  },
  {
    "name": "Malaysia",
    "iso2": "MY",
    "iso3": "MYS",
    "code": 458
  },
  {
    "name": "Maldives",
    "iso2": "MV",
    "iso3": "MDV",
    "code": 462
  },
  {
    "name": "Mali",
    "iso2": "ML",
    "iso3": "MLI",
    "code": 466
  },
  {
    "name": "Malta",
    "iso2": "MT",
    "iso3": "MLT",
    "code": 470
  },
  {
    "name": "MarshallIslands",
    "iso2": "MH",
    "iso3": "MHL",
    "code": 584
  },
  {
    "name": "Martinique",
    "iso2": "MQ",
    "iso3": "MTQ",
    "code": 474
  },
  {
    "name": "Mauritania",
    "iso2": "MR",
    "iso3": "MRT",
    "code": 478
  },
  {
    "name": "Mauritius",
    "iso2": "MU",
    "iso3": "MUS",
    "code": 480
  },
  {
    "name": "Mayotte",
    "iso2": "YT",
    "iso3": "MYT",
    "code": 175
  },
  {
    "name": "Mexico",
    "iso2": "MX",
    "iso3": "MEX",
    "code": 484
  },
  {
    "name": "Micronesia,FederatedStatesof",
    "iso2": "FM",
    "iso3": "FSM",
    "code": 583
  },
  {
    "name": "Moldova",
    "iso2": "MD",
    "iso3": "MDA",
    "code": 498
  },
  {
    "name": "Monaco",
    "iso2": "MC",
    "iso3": "MCO",
    "code": 492
  },
  {
    "name": "Mongolia",
    "iso2": "MN",
    "iso3": "MNG",
    "code": 496
  },
  {
    "name": "Montenegro",
    "iso2": "ME",
    "iso3": "MNE",
    "code": 499
  },
  {
    "name": "Montserrat",
    "iso2": "MS",
    "iso3": "MSR",
    "code": 500
  },
  {
    "name": "Morocco",
    "iso2": "MA",
    "iso3": "MAR",
    "code": 504
  },
  {
    "name": "Mozambique",
    "iso2": "MZ",
    "iso3": "MOZ",
    "code": 508
  },
  {
    "name": "Myanmar",
    "iso2": "MM",
    "iso3": "MMR",
    "code": 104
  },
  {
    "name": "Namibia",
    "iso2": "NA",
    "iso3": "NAM",
    "code": 516
  },
  {
    "name": "Nauru",
    "iso2": "NR",
    "iso3": "NRU",
    "code": 520
  },
  {
    "name": "Nepal",
    "iso2": "NP",
    "iso3": "NPL",
    "code": 524
  },
  {
    "name": "Netherlands",
    "iso2": "NL",
    "iso3": "NLD",
    "code": 528
  },
  {
    "name": "NetherlandsAntilles",
    "iso2": "AN",
    "iso3": "ANT",
    "code": 530
  },
  {
    "name": "NewCaledonia",
    "iso2": "NC",
    "iso3": "NCL",
    "code": 540
  },
  {
    "name": "NewZealand",
    "iso2": "NZ",
    "iso3": "NZL",
    "code": 554
  },
  {
    "name": "Nicaragua",
    "iso2": "NI",
    "iso3": "NIC",
    "code": 558
  },
  {
    "name": "Niger",
    "iso2": "NE",
    "iso3": "NER",
    "code": 562
  },
  {
    "name": "Nigeria",
    "iso2": "NG",
    "iso3": "NGA",
    "code": 566
  },
  {
    "name": "Niue",
    "iso2": "NU",
    "iso3": "NIU",
    "code": 570
  },
  {
    "name": "NorfolkIsland",
    "iso2": "NF",
    "iso3": "NFK",
    "code": 574
  },
  {
    "name": "NorthernMarianaIslands",
    "iso2": "MP",
    "iso3": "MNP",
    "code": 580
  },
  {
    "name": "Norway",
    "iso2": "NO",
    "iso3": "NOR",
    "code": 578
  },
  {
    "name": "Oman",
    "iso2": "OM",
    "iso3": "OMN",
    "code": 512
  },
  {
    "name": "Pakistan",
    "iso2": "PK",
    "iso3": "PAK",
    "code": 586
  },
  {
    "name": "Palau",
    "iso2": "PW",
    "iso3": "PLW",
    "code": 585
  },
  {
    "name": "PalestinianTerritory,Occupied",
    "iso2": "PS",
    "iso3": "PSE",
    "code": 275
  },
  {
    "name": "Panama",
    "iso2": "PA",
    "iso3": "PAN",
    "code": 591
  },
  {
    "name": "PapuaNewGuinea",
    "iso2": "PG",
    "iso3": "PNG",
    "code": 598
  },
  {
    "name": "Paraguay",
    "iso2": "PY",
    "iso3": "PRY",
    "code": 600
  },
  {
    "name": "Peru",
    "iso2": "PE",
    "iso3": "PER",
    "code": 604
  },
  {
    "name": "Philippines",
    "iso2": "PH",
    "iso3": "PHL",
    "code": 608
  },
  {
    "name": "Pitcairn",
    "iso2": "PN",
    "iso3": "PCN",
    "code": 612
  },
  {
    "name": "Poland",
    "iso2": "PL",
    "iso3": "POL",
    "code": 616
  },
  {
    "name": "Portugal",
    "iso2": "PT",
    "iso3": "PRT",
    "code": 620
  },
  {
    "name": "PuertoRico",
    "iso2": "PR",
    "iso3": "PRI",
    "code": 630
  },
  {
    "name": "Qatar",
    "iso2": "QA",
    "iso3": "QAT",
    "code": 634
  },
  {
    "name": "Réunion",
    "iso2": "RE",
    "iso3": "REU",
    "code": 638
  },
  {
    "name": "Romania",
    "iso2": "RO",
    "iso3": "ROU",
    "code": 642
  },
  {
    "name": "RussianFederation",
    "iso2": "RU",
    "iso3": "RUS",
    "code": 643
  },
  {
    "name": "Rwanda",
    "iso2": "RW",
    "iso3": "RWA",
    "code": 646
  },
  {
    "name": "Saint-Barthélemy",
    "iso2": "BL",
    "iso3": "BLM",
    "code": 652
  },
  {
    "name": "SaintHelena",
    "iso2": "SH",
    "iso3": "SHN",
    "code": 654
  },
  {
    "name": "SaintKittsandNevis",
    "iso2": "KN",
    "iso3": "KNA",
    "code": 659
  },
  {
    "name": "SaintLucia",
    "iso2": "LC",
    "iso3": "LCA",
    "code": 662
  },
  {
    "name": "Saint-Martin(Frenchpart)",
    "iso2": "MF",
    "iso3": "MAF",
    "code": 663
  },
  {
    "name": "SaintPierreandMiquelon",
    "iso2": "PM",
    "iso3": "SPM",
    "code": 666
  },
  {
    "name": "SaintVincentandGrenadines",
    "iso2": "VC",
    "iso3": "VCT",
    "code": 670
  },
  {
    "name": "Samoa",
    "iso2": "WS",
    "iso3": "WSM",
    "code": 882
  },
  {
    "name": "SanMarino",
    "iso2": "SM",
    "iso3": "SMR",
    "code": 674
  },
  {
    "name": "SaoTomeandPrincipe",
    "iso2": "ST",
    "iso3": "STP",
    "code": 678
  },
  {
    "name": "SaudiArabia",
    "iso2": "SA",
    "iso3": "SAU",
    "code": 682
  },
  {
    "name": "Senegal",
    "iso2": "SN",
    "iso3": "SEN",
    "code": 686
  },
  {
    "name": "Serbia",
    "iso2": "RS",
    "iso3": "SRB",
    "code": 688
  },
  {
    "name": "Seychelles",
    "iso2": "SC",
    "iso3": "SYC",
    "code": 690
  },
  {
    "name": "SierraLeone",
    "iso2": "SL",
    "iso3": "SLE",
    "code": 694
  },
  {
    "name": "Singapore",
    "iso2": "SG",
    "iso3": "SGP",
    "code": 702
  },
  {
    "name": "Slovakia",
    "iso2": "SK",
    "iso3": "SVK",
    "code": 703
  },
  {
    "name": "Slovenia",
    "iso2": "SI",
    "iso3": "SVN",
    "code": 705
  },
  {
    "name": "SolomonIslands",
    "iso2": "SB",
    "iso3": "SLB",
    "code": 90
  },
  {
    "name": "Somalia",
    "iso2": "SO",
    "iso3": "SOM",
    "code": 706
  },
  {
    "name": "SouthAfrica",
    "iso2": "ZA",
    "iso3": "ZAF",
    "code": 710
  },
  {
    "name": "SouthGeorgiaandtheSouthSandwichIslands",
    "iso2": "GS",
    "iso3": "SGS",
    "code": 239
  },
  {
    "name": "SouthSudan",
    "iso2": "SS",
    "iso3": "SSD",
    "code": 728
  },
  {
    "name": "Spain",
    "iso2": "ES",
    "iso3": "ESP",
    "code": 724
  },
  {
    "name": "SriLanka",
    "iso2": "LK",
    "iso3": "LKA",
    "code": 144
  },
  {
    "name": "Sudan",
    "iso2": "SD",
    "iso3": "SDN",
    "code": 736
  },
  {
    "name": "Suriname*",
    "iso2": "SR",
    "iso3": "SUR",
    "code": 740
  },
  {
    "name": "SvalbardandJanMayenIslands",
    "iso2": "SJ",
    "iso3": "SJM",
    "code": 744
  },
  {
    "name": "Swaziland",
    "iso2": "SZ",
    "iso3": "SWZ",
    "code": 748
  },
  {
    "name": "Sweden",
    "iso2": "SE",
    "iso3": "SWE",
    "code": 752
  },
  {
    "name": "Switzerland",
    "iso2": "CH",
    "iso3": "CHE",
    "code": 756
  },
  {
    "name": "SyrianArabRepublic(Syria)",
    "iso2": "SY",
    "iso3": "SYR",
    "code": 760
  },
  {
    "name": "Taiwan,RepublicofChina",
    "iso2": "TW",
    "iso3": "TWN",
    "code": 158
  },
  {
    "name": "Tajikistan",
    "iso2": "TJ",
    "iso3": "TJK",
    "code": 762
  },
  {
    "name": "Tanzania*,UnitedRepublicof",
    "iso2": "TZ",
    "iso3": "TZA",
    "code": 834
  },
  {
    "name": "Thailand",
    "iso2": "TH",
    "iso3": "THA",
    "code": 764
  },
  {
    "name": "Timor-Leste",
    "iso2": "TL",
    "iso3": "TLS",
    "code": 626
  },
  {
    "name": "Togo",
    "iso2": "TG",
    "iso3": "TGO",
    "code": 768
  },
  {
    "name": "Tokelau",
    "iso2": "TK",
    "iso3": "TKL",
    "code": 772
  },
  {
    "name": "Tonga",
    "iso2": "TO",
    "iso3": "TON",
    "code": 776
  },
  {
    "name": "TrinidadandTobago",
    "iso2": "TT",
    "iso3": "TTO",
    "code": 780
  },
  {
    "name": "Tunisia",
    "iso2": "TN",
    "iso3": "TUN",
    "code": 788
  },
  {
    "name": "Turkey",
    "iso2": "TR",
    "iso3": "TUR",
    "code": 792
  },
  {
    "name": "Turkmenistan",
    "iso2": "TM",
    "iso3": "TKM",
    "code": 795
  },
  {
    "name": "TurksandCaicosIslands",
    "iso2": "TC",
    "iso3": "TCA",
    "code": 796
  },
  {
    "name": "Tuvalu",
    "iso2": "TV",
    "iso3": "TUV",
    "code": 798
  },
  {
    "name": "Uganda",
    "iso2": "UG",
    "iso3": "UGA",
    "code": 800
  },
  {
    "name": "Ukraine",
    "iso2": "UA",
    "iso3": "UKR",
    "code": 804
  },
  {
    "name": "UnitedArabEmirates",
    "iso2": "AE",
    "iso3": "ARE",
    "code": 784
  },
  {
    "name": "UnitedKingdom",
    "iso2": "GB",
    "iso3": "GBR",
    "code": 826
  },
  {
    "name": "UnitedStatesofAmerica",
    "iso2": "US",
    "iso3": "USA",
    "code": 840
  },
  {
    "name": "UnitedStatesMinorOutlyingIslands",
    "iso2": "UM",
    "iso3": "UMI",
    "code": 581
  },
  {
    "name": "Uruguay",
    "iso2": "UY",
    "iso3": "URY",
    "code": 858
  },
  {
    "name": "Uzbekistan",
    "iso2": "UZ",
    "iso3": "UZB",
    "code": 860
  },
  {
    "name": "Vanuatu",
    "iso2": "VU",
    "iso3": "VUT",
    "code": 548
  },
  {
    "name": "Venezuela(BolivarianRepublicof)",
    "iso2": "VE",
    "iso3": "VEN",
    "code": 862
  },
  {
    "name": "VietNam",
    "iso2": "VN",
    "iso3": "VNM",
    "code": 704
  },
  {
    "name": "VirginIslands,US",
    "iso2": "VI",
    "iso3": "VIR",
    "code": 850
  },
  {
    "name": "WallisandFutunaIslands",
    "iso2": "WF",
    "iso3": "WLF",
    "code": 876
  },
  {
    "name": "WesternSahara",
    "iso2": "EH",
    "iso3": "ESH",
    "code": 732
  },
  {
    "name": "Yemen",
    "iso2": "YE",
    "iso3": "YEM",
    "code": 887
  },
  {
    "name": "Zambia",
    "iso2": "ZM",
    "iso3": "ZMB",
    "code": 894
  },
  {
    "name": "Zimbabwe",
    "iso2": "ZW",
    "iso3": "ZWE",
    "code": 716
  }
]

和带国家代码的topojson。 3位代码链接到topojson我使用了这个topojson:http://bl.ocks.org/mbostock/raw/4090846/world-50m.json

{"type":"Polygon","id":574,"arcs":[[2005]]},

的Javascript

var test;

d3.json("jsons/topo.json", function(main){
  d3.json("jsons/name_and_codes.json", function(subs){
    test = subs;
    stitch(main, ["objects","countries", "geometries"], ["id"], subs, [], ["code"], "iso");
  });
});

function stitch(data_main, data_main_path_item, data_main_path_value, data_subs, data_subs_path_item, data_subs_path_value, field_name){

  //get main items
  var data_main_item = data_main;
  for (var i = 0; i < data_main_path_item.length; i++) {
    data_main_item = data_main_item[data_main_path_item[i]];
  }
  //get sub items
  var data_subs_item = data_subs;
  for (var i = 0; i < data_subs_path_item.length; i++) {
    data_subs_item = data_subs_item[data_subs_path_item[i]];
  }

  //iterate threw subs items and create easily traversible object
  var data_subs_dict = [];
  for (var i in data_subs_item) {
    //get the value of the sub items
    var data_subs_value = data_subs_item[i];
    for (var ii = 0; ii < data_subs_path_value.length; ii++) {
      data_subs_value = data_subs_value[data_subs_path_value[ii]];
    }
    data_subs_dict[data_subs_value] = data_subs_item[i];
  }

  //iterate threw main items
  var data_main_dict = data_main_item;
  for (var i in data_main_item) {
    //get the value of the main items
    var data_main_value = data_main_item[i];
    for (var ii = 0; ii < data_main_path_value.length; ii++) { 
      data_main_value = data_main_value[data_main_path_value[ii]];
    }

    data_main_dict[i][field_name] = data_subs_dict[data_main_value];
  }
  var data_news = data_main;

  //append data_main_dict which isn't working
  /*
  for (var i = 0; i < data_main_path_item.length; i++) {
    if ( i == data_main_path_item.length )
    data_news[data_main_path_item[i]] = data_main_dict ;
  }*/

  data_news.objects.countries.geometries = data_main_dict; //NOT GENERIC!

  console.log(data_news);

  return data_news;
}

0 个答案:

没有答案