【问题标题】:Create JSON object starting from another JSON Object for Materialize Autocomplete [duplicate]从另一个 JSON 对象开始创建 JSON 对象以实现自动完成 [重复]
【发布时间】:2020-10-16 15:12:40
【问题描述】:

我正在尝试使用 Materialise 的自动完成功能。

API 请求提供以下数据:

[
    {
       "id": 4007,
       "name": "Curitiba, Paraná, BR"
    },
    {
       "id": 4391,
       "name": "Curitibanos, Santa Catarina, BR"
    }

]

但我需要使用 JavaScript 格式化这些数据,格式如下:

{ 
  "Curitiba, Paraná, BR": null,
  "Curitibanos, Santa Catarina, BR" , null
}

提前感谢您的帮助! :)

【问题讨论】:

    标签: javascript arrays json object materialize


    【解决方案1】:

    您可以将map 对象数组转换为{[name]: null} 对象数组。这里[name] 是一个computed property name,它允许您使用name 变量的值作为对象的键。然后,您可以使用 Object.assign()spread syntax (...) 将映射数组合并到一个结果对象中。

    请看下面的例子:

    const arr= [ { "id": 4007, "name": "Curitiba, Paraná, BR" }, { "id": 4391, "name": "Curitibanos, Santa Catarina, BR" } ];
    
    const res = Object.assign(...arr.map(({name}) => ({[name]: null})));
    console.log(res);

    【讨论】:

      【解决方案2】:

      为此,您只需将每个名称分配为新对象中的键:

      const data = [
          {
             "id": 4007,
             "name": "Curitiba, Paraná, BR"
          },
          {
             "id": 4391,
             "name": "Curitibanos, Santa Catarina, BR"
          }
      
      ];
      
      var object = {};
      var i = 0;
      
      for (i = 0; i < data.length; i++) {
          object[data[i].name] = null;
      };
      
      console.log(object);

      【讨论】:

      • 真棒答案,就像一个魅力,对于我不熟悉 Javascript 的我来说,这让我清楚地看到了操作背后的逻辑。无论如何,在控制台中看起来像它返回的 Curitiba, Paraná, BR: null 而不是 "Curitiba, Paraná, BR": null 这只是检查员的格式化还是预期的?谢谢。
      • 谢谢 :) 我认为这只是格式化 - 您可以通过 console.log(JSON.stringify(object)); 向自己证明这一点。除了更易于理解之外,简单地使用 for 循环也比这些较新的内置函数更有效(不需要函数调用),因此这通常看起来是最佳实践。
      猜你喜欢
      • 2019-06-18
      • 2013-06-04
      • 1970-01-01
      • 2012-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-07
      相关资源
      最近更新 更多