【问题标题】:How can i give each of the objects in my array their own key?如何为数组中的每个对象提供自己的密钥?
【发布时间】:2016-05-02 18:42:51
【问题描述】:

我正在尝试以这样一种方式更改我的数据,即我的对象的每个元素都有自己的密钥。我认为我的问题相当简单,但我还没有想出如何做到这一点。

我的数据现在的排列方式:

[
  {
    "country name": "Qatar",
    "GDP": "140,649.2",
    "country code": "QAT"
  },
  {
    "country name": "MacaoSAR,China",
    "GDP": "139,767.3",
    "country code": "LUX"
  },
...

我希望我的数据的排列方式:

data: {    
    'QAT': {
         "country name": "Qatar",
         "GDP": "140,649.2",
       },
    'LUX': {
         "country name": "MacaoSAR,China",
         "GDP": "139,767.3",
       },
 ...

请不要介意不同的键值对。我完全对如何在{} 括号内赋予我的值一个键值感兴趣,如第二个示例所示。

【问题讨论】:

  • 只需将您的第二个示例包装在 {} 中,这应该适合您。
  • 我不认为我很关注你,包装我的第二个例子并没有真正给每个元素一个键值?
  • startOfConflict 应该来自哪里?或fillKey?或name?
  • 我不明白您从第一个示例到第二个示例的逻辑是如何进行的。但是第一个示例,您的对象位于数组中,因此它们没有键,在第二个示例中,对象位于另一个对象中。所以要给你的对象键,你需要把它们放在一个对象中。
  • 你确定“国家代码”不会重复吗?

标签: javascript key key-value


【解决方案1】:

非重复出现"country code"键的解决方案:

var arr = [    // exemplary array
    {
        "country name": "Qatar",
        "GDP": "140,649.2",
        "country code": "QAT"
    },
    {
        "country name": "MacaoSAR,China",
        "GDP": "139,767.3",
        "country code": "LUX"
    }
], rearranged = {};

arr.forEach(function(obj){
    var info = {};
    Object.keys(obj).forEach((k) => k === "country code" || (info[k] = obj[k]));
    rearranged[obj["country code"]] = info;
});

console.log(JSON.stringify(rearranged, 0, 4));

输出:

{
    "QAT": {
        "country name": "Qatar",
        "GDP": "140,649.2"
    },
    "LUX": {
        "country name": "MacaoSAR,China",
        "GDP": "139,767.3"
    }
}

【讨论】:

    【解决方案2】:

    你可以把它作为一个对象而不是像这样的数组发送......

    {
      "NLD": {
        "fillKey": "conflict",
        "name": "2012 Northern Mali conflict",
        "startOfConflict": 2012
      },
      "LBY": {
        "fillKey": "conflict",
        "name": "2011– present Libyan factional fighting",
        "startOfConflict": 2011
      }
    }
    

    【讨论】:

      【解决方案3】:

      这将是一个问题,键在 JSON 中必须是唯一的,例如 case 键可能会重复,因此您可能会在解析时丢失一些数据,最好使用当前结构,或者您可以使用数字作为键。

      【讨论】:

        猜你喜欢
        • 2021-10-31
        • 2019-12-16
        • 1970-01-01
        • 2020-11-23
        • 2018-01-04
        • 1970-01-01
        • 1970-01-01
        • 2011-07-14
        • 1970-01-01
        相关资源
        最近更新 更多