Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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
如何映射json数据以获取所有单个组件?_Json_Reactjs_Laravel - Fatal编程技术网

如何映射json数据以获取所有单个组件?

如何映射json数据以获取所有单个组件?,json,reactjs,laravel,Json,Reactjs,Laravel,我想从这些数据中获取所有单独的组件,这些数据是我从API中获取的。但来自API的数据如下所示: { "1":{ "id":1, "name":"Burger", "price":8.99, "quantity":"2", "attributes":[ ], "conditions":[ ] }, "2":{ "id":2, "name"

我想从这些数据中获取所有单独的组件,这些数据是我从API中获取的。但来自API的数据如下所示:

{  
   "1":{  
      "id":1,
      "name":"Burger",
      "price":8.99,
      "quantity":"2",
      "attributes":[  

      ],
      "conditions":[  

      ]
   },
   "2":{  
      "id":2,
      "name":"Poutine",
      "price":9.99,
      "quantity":"2",
      "attributes":[  

      ],
      "conditions":[  

      ]
   }
}

如果我在这个数组上使用map函数,它会说map函数不存在。而且没有一个通用的数组名可以用来获取所有数据。我是否应该使用for循环来遍历其中的所有产品?

这是一个对象,但属性“键”似乎都是顺序数字

如果您不关心键,只需对其调用
Object.values()
,即可返回值数组,映射函数将根据该数组工作

var obj ={  
   "1":{  
      "id":1,
      "name":"Burger",
      "price":8.99,
      "quantity":"2",
      "attributes":[  

      ],
      "conditions":[  

      ]
   },
   "2":{  
      "id":2,
      "name":"Poutine",
      "price":9.99,
      "quantity":"2",
      "attributes":[  

      ],
      "conditions":[  

      ]
   }
}; 

var justTheValues = Object.values(obj); 

//get the list of just the ids 
var idList = justTheValues.map(function(item){  
   return item.id;
});

Object.entries(data).map(item=>item[1]).map()

您可以使用lodash的地图

 import _ from 'lodash'
    let data ={  
       "1":{  
          "id":1,
          "name":"Burger",
          "price":8.99,
          "quantity":"2",
          "attributes":[  

          ],
          "conditions":[  

          ]
       },
       "2":{  
          "id":2,
          "name":"Poutine",
          "price":9.99,
          "quantity":"2",
          "attributes":[  

          ],
          "conditions":[  

          ]
       }
    }; 

    _.map(data,( item) => console.log(item))

在父组件中,使用for In循环映射值以生成组件数组

let arr = [];
        for(let i in obj){
          let item = obj[i]
          arr.push(<DataComp {...item}/>)
        }
让arr=[];
用于(让我输入obj){
let item=obj[i]
arr.push()
}
这里有一个工作片段,您可以查看它

类DataComp扩展了React.Component{ render(){ //在这里,您可以根据需要设置子组件 返回(名称:{this.props.Name},价格:{this.props.Price}); } } 类应用程序扩展了React.Component{ render(){ 设obj={ "1":{ “id”:1, “姓名”:“汉堡”, “价格”:8.99, “数量”:“2”, “属性”:[ ], “条件”:[ ] }, "2":{ “id”:2, “名称”:“Poutine”, “价格”:9.99, “数量”:“2”, “属性”:[ ], “条件”:[ ] } }; 设arr=[]; 用于(让我输入obj){ let item=obj[i] arr.push() } 返回({arr}); } } ReactDOM.render(,document.getElementById(“app”)
看起来像一个以数字为键的对象文字,它肯定不是数组。可能是Laravel后端中的JSON转换,而不是数组。