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中使用它们向用户显示数据。