Javascript 复杂嵌套对象的数组分解
我有以下关于解构语法的行Javascript 复杂嵌套对象的数组分解,javascript,ecmascript-6,destructuring,Javascript,Ecmascript 6,Destructuring,我有以下关于解构语法的行 const[ {data:dataResponse}, {data:stateDistrictWiseResponse}, {data:statesDailyResponse}, {data:stateTestResponse}, {data:sourcesResponse}, {数据:区域响应}, ]=somerr; someArr是一个对象数组(实际上是Promise.all([url1,url2,…])的结果,其中每个url返回一个json对象) 如何评估上述解
const[
{data:dataResponse},
{data:stateDistrictWiseResponse},
{data:statesDailyResponse},
{data:stateTestResponse},
{data:sourcesResponse},
{数据:区域响应},
]=somerr;
someArr
是一个对象数组(实际上是Promise.all([url1,url2,…])的结果,其中每个url返回一个json对象)
如何评估上述解构语法?通过解构语法提取的值与对象文字的语法非常相似。例如,如果someArr
定义为(或包含):
然后是语法
const [
{data: dataResponse},
{data: stateDistrictWiseResponse},
] = someArr;
将'dataResponse'
字符串放入dataResponse
变量,将'stateDistrictWiseResponse'
字符串放入stateDistrictWiseResponse
变量
属性后的冒号表示该属性正被提取到一个变量中,该变量的名称位于冒号的右侧。(如果在分解结构时没有冒号,则将该值放入一个与属性名称相同的新变量名称中,例如const{data}=someObj
创建名为data
的变量,该变量将值保存在someObj.data
)
但是,您的原始代码很难阅读。我强烈建议先映射以创建仅包含数据属性的新数组,然后再分解:
const dataArr = someArr.map(({ data }) => data);
const [
dataResponse,
stateDistrictWiseResponse,
statesDailyResponse,
stateTestResponse,
sourcesResponse,
zonesResponse,
] = dataArr;
非常感谢……实际上“someArr”的结构并不是真正的{data:'dataResponse'},而是类似于{“cases_time_series”:[{“a1”:“1”}],“statewise”:[{“a2”:“2”}],“tested”:[{“a3”:“3”}}然后你在问题中发布的代码将不会提取任何属性,因此它们都将未定义
实际上我刚刚进行了一个快速的跟进…因此你根据属性后面是否有冒号来说明差异。我尝试的是没有冒号;var[{a},{B},]=someArr;现在,我希望变量“A”和“B”获取/包含值…但我看到在执行上述代码行后它们未定义…因此,不确定这是否真的是在解构语法或发生其他事情。。。
const dataArr = someArr.map(({ data }) => data);
const [
dataResponse,
stateDistrictWiseResponse,
statesDailyResponse,
stateTestResponse,
sourcesResponse,
zonesResponse,
] = dataArr;