【问题标题】:Json Object Array:replacing 'key' names with their values to avoid same key name and easy retrievalJson Object Array:用它们的值替换'key'名称以避免相同的键名和易于检索
【发布时间】:2020-03-04 05:53:55
【问题描述】:

我有一个这样的 json 对象数组:

[
    {
        "entity": "clientModal",
        "value": "MacBook"
    },
    {
        "entity": "siteName",
        "value": "abde"
    },
    {
        "entity": "clientModal",
        "value": "MacBook"
    },
    {
        "entity": "siteName",
        "value": "abcd"
    },
    {
        "entity": "clientName",
        "value": "ghe-1202m"
    },
    {
        "entity": "timePeriod",
        "value": "week"
    },
    {
        "entity": "clientName",
        "value": "ghe-1202m"
    },
    {
        "entity": "timePeriod",
        "value": "week"
    },
    {
        "entity": "clientName",
        "value": "ghe-1202m"
    },
    {
        "entity": "clientName",
        "value": "ppphone"
    },
    {
        "entity": "clientName",
        "value": "pppiphone"
    }
]

我希望键“实体”在任何地方都应替换为其值,并且键“值”必须在其中。 像这样:

[ { “客户名称”: { “价值”:“ppiphone” } } ]

我尝试了 evreything,但仍然没有找到任何东西。

【问题讨论】:

    标签: node.js json arrayobject


    【解决方案1】:

    您需要映射数组并创建一个新对象,其中entity 值将用作键的名称。

    const arrays = [
        {
            "entity": "clientModal",
            "value": "MacBook"
        },
        {
            "entity": "siteName",
            "value": "abde"
        },
        {
            "entity": "clientModal",
            "value": "MacBook"
        },
        {
            "entity": "siteName",
            "value": "abcd"
        },
        {
            "entity": "clientName",
            "value": "ghe-1202m"
        },
        {
            "entity": "timePeriod",
            "value": "week"
        },
        {
            "entity": "clientName",
            "value": "ghe-1202m"
        },
        {
            "entity": "timePeriod",
            "value": "week"
        },
        {
            "entity": "clientName",
            "value": "ghe-1202m"
        },
        {
            "entity": "clientName",
            "value": "ppphone"
        },
        {
            "entity": "clientName",
            "value": "pppiphone"
        }
    ];
    
    const mappedArray = arrays.map(arr => ({
       [arr.entity]: {
         value: arr.value
       }
    }));
    
    console.log(mappedArray);

    【讨论】:

      【解决方案2】:

      让我们尝试一些不为输出创建新数组的方法。只需修改现有的:

      for (let i = 0; i < arrays.length; i++) {
          arrays[i] = {
              [arrays[i].entity]: {
                  value: arrays[i].value
              }
          }
      }
      
      console.log(arrays)
      

      【讨论】:

        【解决方案3】:

        遵循非常基本的循环方法。

        var a = [
            {
                "entity": "clientModal",
                "value": "MacBook"
            },
            {
                "entity": "siteName",
                "value": "abde"
            },
            {
                "entity": "clientModal",
                "value": "MacBook"
            }
        ];
        var finalArray = []
        for(let i = 0; i < a.length; i++) {
            let s =`{ "${a[i].entity}": { "value": "${a[i].value}" } }`;
            finalArray.push(JSON.parse(s));
        }
        
        console.log(JSON.stringify(finalArray));
        

        输出:

        [{"clientModal":{"value":"MacBook"}},{"siteName":{"value":"abde"}},{"clientModal":{"value":"MacBook"}}]
        

        【讨论】:

          猜你喜欢
          • 2020-03-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2019-09-09
          • 2013-03-18
          • 2017-01-04
          • 1970-01-01
          • 2015-09-19
          相关资源
          最近更新 更多