javascript - 如果键存在,则使用键和值形成 JSON

标签 javascript arrays json javascript-objects

我有一个 JSON 结构,如下所示:

    [  
   {  
      "name":"angelinas"
   },
   {  
      "name":"besuto"
   },
   {  
      "name":"catch",
      "cuisine":"Japanese"
   },
   {  
      "name":"center cut"
   },
   {  
      "name":"fedora"
   },
   {  
      "name":"Habanero",
      "cuisine":"Mexican"
   },
   {  
      "name":"Indies"
   },
   {  
      "name":"new"
   },
   {  
      "name":"RazINN"
   },
   {  
      "name":"restaurantTestVenue779"
   },
   {  
      "name":"restaurantTestVenue9703"
   },
   {  
      "name":"Salsa ",
      "cuisine":"Mexican"
   },
   {  
      "name":"Sushi Place",
      "cuisine":"Japanese"
   },
   {  
      "name":"The Ashoka"
   },
   {  
      "name":"The Poboys"
   },
   {  
      "name":"the shogun"
   },
   {  
      "name":"vinyard view"
   }
]

使用上面的 JSON,我想确定菜肴是否与餐厅相关。如果是,我想构建一个 JSON 结构,如下所示:

[  
   {  
      "Mexican":{  
         "venueNames":[  
            "Habanero",
            "Salsa"
         ]
      }
   },
   {  
      "Japanese":{  
         "venueNames":[  
            "Sushi Place",
            "catch"
         ]
      }
   }
]

尝试使用 for 循环和 .hasProperty 构建 JSON,但不太成功。

最佳答案

这就是你可以做的! 首先迭代数据并使用方法“hasOwnProperty”检查菜系是否存在,如果存在,则检查您的菜系对象是否具有该菜系,如果存在则将其添加到其中。

const data = [{
        "name": "angelinas"
    },
    {
        "name": "besuto"
    },
    {
        "name": "catch",
        "cuisine": "Japanese"
    },
    {
        "name": "center cut"
    },
    {
        "name": "fedora"
    },
    {
        "name": "Habanero",
        "cuisine": "Mexican"
    },
    {
        "name": "Indies"
    },
    {
        "name": "new"
    },
    {
        "name": "RazINN"
    },
    {
        "name": "restaurantTestVenue779"
    },
    {
        "name": "restaurantTestVenue9703"
    },
    {
        "name": "Salsa ",
        "cuisine": "Mexican"
    },
    {
        "name": "Sushi Place",
        "cuisine": "Japanese"
    },
    {
        "name": "The Ashoka"
    },
    {
        "name": "The Poboys"
    },
    {
        "name": "the shogun"
    },
    {
        "name": "vinyard view"
    }
]

let cuisines = {};


for (const resturant of data) {
    if (resturant.hasOwnProperty('cuisine')) {

        if (cuisines.hasOwnProperty(resturant.cuisine)) {
            cuisines[resturant.cuisine].venueNames.push(resturant.name);
        } else {
            cuisines[resturant.cuisine] = {
                venueNames: [resturant.name]
            };
        }
    }
}

关于javascript - 如果键存在,则使用键和值形成 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52444448/

相关文章:

javascript - 如果找不到图像,如何防止显示图像占位符?

java - Jackson Spring Controller 序列化

javascript - 根据我的项目中的以下要求转换json

json - 如何创建 key :value list from JSON? key 名称应包含对象本身的一些值

javascript - 具有动态输入字段的动态表中的复选框

javascript - Internet Explorer 和 Firefox 的输入类型日历

javascript - react 选择值为 null

C:将矩形切割成正方形的算法

javascript - 根据条件检查遍历每个对象数组

php - 向 PHP 数组添加一列