Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/391.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 React-通过多个嵌套数组循环json对象响应,然后更新状态_Javascript_Json_Reactjs - Fatal编程技术网

Javascript React-通过多个嵌套数组循环json对象响应,然后更新状态

Javascript React-通过多个嵌套数组循环json对象响应,然后更新状态,javascript,json,reactjs,Javascript,Json,Reactjs,我有一些数据具有以下形状。计划数据还附加了其他标识信息,即计划。包括,这是一个数组数组。我想循环遍历每个包含的数组,并通过类型元素找到它。我不完全确定如何按类型将每个包含[],然后分别用每个数组中的数据更新状态。forEach是正确的方法吗 const schedules = { data: [ { id: "2147483610", type: "Schedule" } ], included: [ { id: "2146

我有一些数据具有以下形状。计划数据还附加了其他标识信息,即
计划。包括
,这是一个数组数组。我想循环遍历每个包含的数组,并通过
类型
元素找到它。我不完全确定如何按类型将每个
包含[]
,然后分别用每个数组中的数据更新状态。
forEach
是正确的方法吗

const schedules = {
  data: [
    {
      id: "2147483610",
      type: "Schedule"
    }
  ],
  included: [
    {
      id: "21468486",
      type: "Query",
      name: "Query1"
    },
    {
      id: "43573457345",
      type: "DataSource",
      name: "DataSource1"
    }
  ]
};
然后我想用我需要的任何数据更新状态

      getData = () => {
        axios({
          method: "get",
          url: `/endpoint/with/this/data`
        })
          .then(response => {
            console.log(response);
            var obj = schedules.included[i].type;
            obj.forEach(function(type) {
            alert(type.name);
            });
            this.setState({
              schedules: schedules.data,
              //update with name from type Query
            });
          })
          .catch(error => console.log(error.response));
      };

如果要从包含的
数组中查找type=Query的元素名称,并且只有一个这样的元素:

var query = schedules.included.find(el => el.type == "Query");
console.log(query.name); // output Query1
如果有多个查询元素,您可以使用过滤器获取所有查询元素,然后循环遍历它们,对每个查询元素进行处理

var queries = schedules.included.filter(el => el.type == "Query");
queries.forEach(q => console.log(q.name));

如果要从包含的
数组中查找type=Query的元素名称,并且只有一个这样的元素:

var query = schedules.included.find(el => el.type == "Query");
console.log(query.name); // output Query1
如果有多个查询元素,您可以使用过滤器获取所有查询元素,然后循环遍历它们,对每个查询元素进行处理

var queries = schedules.included.filter(el => el.type == "Query");
queries.forEach(q => console.log(q.name));

如果只有一个元素具有您要查找的类型,则可以使用“查找”,或者如果有更多的“使用过滤器”。
const schedules={
数据:[
{
id:“2147483610”,
类型:“时间表”
}
],
包括:[
{
id:“21468486”,
键入:“查询”,
名称:“查询1”
},
{
id:“43573457345”,
类型:“数据源”,
名称:“数据源1”
}
]
};
const typeMatched=schedules.included.find(included=>included.type==“Query”);
console.log(“:”,类型匹配);
const schedulesObj={
数据:[
{
id:“2147483610”,
类型:“时间表”
}
],
包括:[
{
id:“21468486”,
键入:“查询”,
名称:“查询1”
},
{
id:“43573457345”,
类型:“数据源”,
名称:“数据源1”
},
{
id:“21468482”,
键入:“查询”,
名称:“查询2”
},
{
id:“21468484”,
键入:“查询”,
名称:“查询3”
},
]
};
const typeMatchedArray=schedulesObj.included.filter(included=>included.type==“查询”);

console.log('Query Type List:',typeMatchedArray)
如果只有一个元素具有您要查找的类型,那么您可以使用find,或者如果有更多的use filter。
const schedules={
数据:[
{
id:“2147483610”,
类型:“时间表”
}
],
包括:[
{
id:“21468486”,
键入:“查询”,
名称:“查询1”
},
{
id:“43573457345”,
类型:“数据源”,
名称:“数据源1”
}
]
};
const typeMatched=schedules.included.find(included=>included.type==“Query”);
console.log(“:”,类型匹配);
const schedulesObj={
数据:[
{
id:“2147483610”,
类型:“时间表”
}
],
包括:[
{
id:“21468486”,
键入:“查询”,
名称:“查询1”
},
{
id:“43573457345”,
类型:“数据源”,
名称:“数据源1”
},
{
id:“21468482”,
键入:“查询”,
名称:“查询2”
},
{
id:“21468484”,
键入:“查询”,
名称:“查询3”
},
]
};
const typeMatchedArray=schedulesObj.included.filter(included=>included.type==“查询”);

console.log('Query Type List:',typeMatchedArray)
array.find或array.filter,qvc您可以发布更多数据,以便我们了解数组的数据外观,您希望在最后获得什么
{schedules:schedules.data,names:namesArray}
或者期望的形状是什么?@sridharreddy在我发布的
包含的示例数据中,两个示例数组用逗号分隔。我没有看到包含的任何数组。我只看到2个objects@DJ2.array.find或array.filter,qv您可以发布更多数据,以便我们了解数组数据的外观吗?最后您希望获得什么
{schedules:schedules.data,names:namesArray}
或者期望的形状是什么?@sridharreddy在我发布的
包含的示例数据中,两个示例数组用逗号分隔。我没有看到包含的任何数组。我只看到2个objects@DJ2。我的最终目标是通过它们的
类型
获取每个包含的数组。例如,我想获得
type==Query
type==DataSource
的name元素,并用这两个名称更新state,这样我就可以在render中使用它们来向用户显示数据。我的最终目标是按
类型获得每个包含的数组。例如,我想为
type==Query
type==DataSource
获取name元素,并用这两个名称更新state,这样我就可以在render中使用它们向用户显示数据。