Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 是否需要在对象中转换此数组?_Javascript_Arrays_Reactjs_React Native_Ecmascript 6 - Fatal编程技术网

Javascript 是否需要在对象中转换此数组?

Javascript 是否需要在对象中转换此数组?,javascript,arrays,reactjs,react-native,ecmascript-6,Javascript,Arrays,Reactjs,React Native,Ecmascript 6,我的数据是一个数组,我正在将其转换为键:值(不确定这是否是它的名称)类型 数据: [ { "id": 1, "title": "Name 01", "tags": [ "TAG1", "TAG4", "TAG2" ] }, { "id": 2, "title": "Name 02", "ta

我的
数据
是一个数组,我正在将其转换为
键:值
(不确定这是否是它的名称)类型

数据:

[
    {
        "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"
            ]
        }
    }
]
如何映射结果并在
视图/文本中显示

我试过:

Object.keys(results).map((result, idx) => {
  return(
      <View key={idx}>
        <Text>{result.title}</Text>
      </View>
    )
});
我这样做的原因是为了将id作为调度操作的目标:

  switch (action.type) {
    case "INC_NUM":
         const newState = {...state};
         newState[action.payload].nubmer++;
         return newState;

听起来您只是希望能够快速找到具有给定id值的对象。与其“转换”你的数据,我建议你只制作一张地图,这样你就可以通过id查找任何对象

let数据=[
{
“id”:1,
“标题”:“名称01”,
“标签”:[
“TAG1”,
“TAG4”,
“TAG2”
]
},
{
“id”:2,
“标题”:“名称02”,
“标签”:[
“TAG4”,
“TAG3”
]
},
{
“id”:3,
“标题”:“姓名03”,
“标签”:[
“TAG1”
]
}
];
//创建一个以id为键、对象为值的映射
设map=newmap();
data.forEach(obj=>{
映射集(obj.id,obj);
});
//查找给定的id

console.log(map.get(3))呃,嗯。为什么?你所做的就是用另一个对象包装每个内部对象,这有什么目的?它所做的只是强制您使用数组[0][1].id来引用对象,而不是
数组[0].id
。事实上,它没有任何成效。这就是你否决我问题的原因吗?我更新了它。当前的
数据/结果
中没有
编号
键。但我想先把它整理一下。如果这些对象的数组没有在数组外部定义,您将如何使用对象的
id
来定位这些对象的数组?因为数组的索引从0开始。所以id1是0,id2是1,等等。假设您没有任何缺少的id,这应该线性地继续。但是,您可以将数组转换为一个遵循类似结构的对象,其中键是id。这就是我在第一次显示的结果中所做的。但是我不能用
地图
显示它。这是本文的第一个问题。请帮忙。不,你的结果仍然是一个数组。为什么要投反对票?请告诉我这个答案有什么问题,以便我可以纠正或改进它。没有任何理由的否决票对社区来说真的不是很有帮助。即使我的问题被否决了,我仍然没有;我不明白为什么。我问了一个问题,他们没有解释,而是投了反对票。不酷。他们让初学者很难学习。@Somename-你的问题可能被否决了,因为它不是很清楚。在你的问题中,你需要做的第一件事就是解释你试图解决的实际问题。准确地显示您想要的输出或您试图使哪些代码工作。您花费了大量精力记录您尝试过的所有代码,但很少解释您试图解决的根本问题是什么。我猜这就是你想要的,因为你的问题不是很清楚。这个网站要求你写出很多人都不擅长的清晰的问题。@Somename-而且,当我们在做的时候,这个答案是否解决了你的问题?如果没有,请解释原因,然后澄清你的问题。你的回答实际上解决了这个问题。这正是我要找的。我现在正试图弄清楚如何处理减速器中的动作。谢谢
  switch (action.type) {
    case "INC_NUM":
         const newState = {...state};
         newState[action.payload].nubmer++;
         return newState;