代码之家  ›  专栏  ›  技术社区  ›  Muhammad Tahir Ali

在Express Js中使用动态键和值动态创建JSON

  •  0
  • Muhammad Tahir Ali  · 技术社区  · 2 年前

    我正在将API提取到我的Express服务器中,该服务器在一个数组中有几个JSON键值对。 例如:

    [{
     "quality": "best",
     "url": "https://someurlhere.example/?someparameters"
    },
    {
     "quality": "medium",
     "url": "https://someurlhere1.example/?someparameters"
    }]
    

    我想创建一个JSON数组,以这种格式接收数据:

    [{
    "best": "https://someurlhere.example/?someparameters"
    },
    {
    "medium": "https://someurlhere1.example/?someparameters"
    }]
    

    我尝试过使用for循环来实现这一点

    for(let i=0; i < formats.length; i++){
       arr.push({
         `${formats[i].quality}` : `${formats[i].url}`
       })
    }
    

    但这对我不起作用。

    请帮我实现这个目标。 提前感谢:)

    2 回复  |  直到 2 年前
        1
  •  2
  •   Tyler2P Suraj Mandal    2 年前

    你可以用 map 函数并从中创建一个新对象。

    例如:

    let prevArr = [{
      "quality": "best",
      "url": "https://someurlhere.example/?someparameters"
    }, {
      "quality": "medium",
      "url": "https://someurlhere1.example/?someparameters"
    }]; // Replace with your array
    let newArr = [];
    let obj = {};
    
    prevArr.map(function(x) {
      obj = {};
      obj[x["quality"]] = x.url;
      newArr.push(obj);
    });
    
        2
  •  1
  •   Sumanta Mukherjee    2 年前
    const input = [{
            "quality": "best",
            "url": "https://someurlhere.example/?someparameters"
        },
        {
            "quality": "medium",
            "url": "https://someurlhere1.example/?someparameters"
        }
    ];
    const result = input.map((v, i) => {
        return {
            [v["quality"]]: v["url"]
        }
    });
    console.log(result)