我的data
是一个数组,我正在转换为key:value
(不确定这是否就是所谓的)类型。
数据:
[
{
"id": 1,
"title": "Name 01",
"tags": [
"TAG1",
"TAG4",
"TAG2"
]
},
{
"id": 2,
"title": "Name 02",
"tags": [
"TAG4",
"TAG3"
]
},
{
"id": 3,
"title": "Name 03",
"tags": [
"TAG1"
]
}
]
我正在将其转换为:
result = data.map(a => ({ [a.id]: a }));
所以我得到了:
结果:
[
{
"1": {
"id": 1,
"title": "Post1 T1 T2 T4",
"tags": [
"TAG1",
"TAG4",
"TAG2"
]
}
},
{
"2": {
"id": 2,
"title": "Post1 T3 T4",
"tags": [
"TAG4",
"TAG3"
]
}
},
{
"3": {
"id": 3,
"title": "Post3 with No Tags",
"tags": [
"TAG1"
]
}
}
]
如何映射结果并显示在View/Text
?
我试过了:
Object.keys(results).map((result, idx) => {
return(
<View key={idx}>
<Text>{result.title}</Text>
</View>
)
});
但我收到了一个错误:Cannot read property 'map' of undefined.
我是否需要将结果转换为对象,然后我才能使用Object.keys
。如果是,我如何在Object中转换整个结果,如下所示:
结果:
{
{
"1": {
"id": 1,
"title": "Post1 T1 T2 T4",
"tags": [
"TAG1",
"TAG4",
"TAG2"
]
}
},
{
"2": {
"id": 2,
"title": "Post1 T3 T4",
"tags": [
"TAG4",
"TAG3"
]
}
},
{
"3": {
"id": 3,
"title": "Post3 with No Tags",
"tags": [
"TAG1"
]
}
}
}
我这样做的原因是针对reducer调度操作的目标:
switch (action.type) {
case "INC_NUM":
const newState = {...state};
newState[action.payload].nubmer++;
return newState;
答案 0 :(得分:0)
听起来你只是希望能够快速找到具有给定id值的对象。我建议您不要“转换”您的数据,而是制作一张地图,以便按ID查找任何对象。
let data = [
{
"id": 1,
"title": "Name 01",
"tags": [
"TAG1",
"TAG4",
"TAG2"
]
},
{
"id": 2,
"title": "Name 02",
"tags": [
"TAG4",
"TAG3"
]
},
{
"id": 3,
"title": "Name 03",
"tags": [
"TAG1"
]
}
];
// create a map with id as the key, object as the value
let map = new Map();
data.forEach(obj => {
map.set(obj.id, obj);
});
// look up a given id
console.log(map.get(3));