Javascript 在react中迭代json数据

Javascript 在react中迭代json数据,javascript,node.js,Javascript,Node.js,我是react和JSON的新手,我需要处理(迭代)react中的一些JSON数据JSON原型如下,“我要控制台属于不同类别的每个房间号”,如何使用map函数实现这一点 请帮我解决这个问题。“对不起,我的英语不好,英语不是我的第一语言 let data = { "category": { "king": [{ "id": 1, "room_no": 101, "price": 2000 }, { "

我是react和JSON的新手,我需要
处理(迭代)
react中的一些JSON数据JSON原型如下,“我要控制台属于不同类别的每个房间号”,如何使用map函数实现这一点

请帮我解决这个问题。“对不起,我的英语不好,英语不是我的第一语言

let data = {
  "category": {
    "king": [{
        "id": 1,
        "room_no": 101,
        "price": 2000
      },
      {
        "id": 2,
        "room_no": 102,
        "price": 3000
      }
    ],
    "queen": [{
        "id": 1,
        "room_no": 101,
        "price": 2000
      },
      {
        "id": 2,
        "room_no": 102,
        "price": 3000
      }
    ]
  }
} 

似乎您希望像对数组一样对对象进行迭代,但不知道如何进行迭代

查看javascript的Object.keys()、Object.values()或Object.entries()

  • key(obj)将返回一个可以映射的键数组
例如
Object.keys({foo:1,bar:2})
['foo','bar']

  • Object.values的作用正好相反:
Object.value({foo:1,bar:2})
[1,2]

  • Object.entries()同时执行这两项操作
Object.entries({foo:1,bar:2})

因此,对您来说,映射对象的方法是:

Object.keys(data.category).map(function(categoryName) {
    var category = data.category[categoryName];
    category.map(function(bed) {
        console.log(
            'Category: , ', categoryName,
            ' / Bed: ', bed.id,
            ' / Room number: ', bed.room_no
        );
    });
});

实际上,您不能单独使用map来实现这一点。或者至少,这与
map
通常的使用方式背道而驰

您可以使用多个
映射
步骤将对象转换为嵌套列表(在本例中为对象列表列表);但您还需要
映射
的结果展平为数字列表。请参阅此处:

let数据={
“类别”:{
“国王”:[{
“id”:1,
“房间号”:101,
“价格”:2000年
},
{
“id”:2,
“房间号”:102,
“价格”:3000美元
}
],
“女王”:[{
“id”:1,
“房间号”:101,
“价格”:2000年
},
{
“id”:2,
“房间号”:102,
“价格”:3000美元
}
]
}
};
const room_nos=对象值(数据)
.map(条目=>
Object.values(条目)
.map(类别=>
类别图(房间=>房间.房间号)
.reduce((结果,数组)=>result.concat(数组),[])
.reduce((结果,数组)=>result.concat(数组),[]);
控制台。日志(房间号);
控制台房间号:

输出:

101
102
101
102
king : 101
king : 102
queen : 101
queen : 102
Object.values(data[“category”])
以嵌套数组格式给出国王和王后类别的值,
[].concat.apply([],[nested_array])
将其展平到一个应用了
array.prototype.map()
的单层数组中

用于格式化结果,如类别:房间号:

输出:

101
102
101
102
king : 101
king : 102
queen : 101
queen : 102

这里循环了
数据[“category”]
并应用了
Array.prototype.map()

如果我想以如下格式显示它:king:101,king:102,queen:101,queen:102