Javascript 在react中迭代json数据
我是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数据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