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;