如何解构此深层嵌套对象?

时间:2019-03-13 15:33:37

标签: javascript arrays destructuring

我在下面具有此功能:

const displayUserPhotoAndName = (data) => {
    if(!data) return;

    // add your code here

    clearNotice();
  };

数据参数是来自https://randomuser.me/api/的API

该作业具有以下说明:

找到displayUserPhotoAndName函数并在其中进行跟踪:

  • 在第一个if(!data)返回之后;终止
    的语句 函数(如果未提供预期的数据参数),请创建
    语句,用于分解数据参数并获得
    结果属性;

  • 在下一行中创建第二条语句以解构 您刚创建的结果变量,并从中获取第一项 (它是一个数组!请参见https://randomuser.me/api/)。您的重组 数组项应声明为配置文件。这代表个人资料 从您要显示的API调用获得的用户数据 在您的应用中。

第3步 仍然在displayUserPhotoAndName函数中:

  • 在您的应用中设置HEADING元素以显示标题,姓氏, 和名字(按顺序,用一个空格隔开) API返回的用户个人资料。
  • 在您的应用中设置IMG以显示用户的大照片 API返回的配置文件。

我做了什么:

const displayUserPhotoAndName = (data) => {
    if(!data) return;

    // add your code here
    const {results} = data.results;
    const [profile] = results;
    const {title, First, Last} = results;
    const [,,,,,,,,,picture] = results;
    const largeImage = picture.large;
    userImage.src = largeImage;
    headerUserInfo.innerText = title + ' ' +  First + ' ' + Last;
    clearNotice();
    displayExtraUserInfo(profile);
  };

我得到的错误:

  

您尚未从“数据”中解构“结果”属性   参数传递给“ displayUserPhotoAndName”函数

我迫切需要帮助。谢谢您的期待

1 个答案:

答案 0 :(得分:3)

我不会为您提供完整的答案,但会给您提示:

const { results } = data
const { profile } = results
console.log(profile)

可以写为:

const { results: { profile } } = data
console.log(profile)

以下是我的一些帖子,您可以从中进一步介绍:

destructure an objects properties

how is this type annotation working

why source target when destructuring