首页 > 解决方案 > 如何访问 API 内部的第二层

问题描述

我有一个如下所示的 API:

{
"id": 749,
"firstName": "Ishna",
"lastName": "Willis",
"email": "Mawfly@awgawggwagov",
"phone": "(162)932-3460",
"adress": {
"streetAddress": "7006 Sed Ave",
"city": "Colfax",
"state": "WI",
"zip": "71085"
},
"description": "{lorem|32"
},

我对这个 API 进行升序和降序排序。

function sortInfo(e) {
  const column = e.target.dataset.column;
  const order = e.target.dataset.order;
  let changeData = e.target;

  if(order === 'desc') {
    changeData.setAttribute('data-order', 'asc');
    searchResult.fetchResult().then(response => {
     response.sort((a,b) => a[column] > b[column] ? 1 : -1);
     buildTable(response)
    })
  } else {
    changeData.setAttribute('data-order', 'desc');
    searchResult.fetchResult().then(response => {
      response.sort((a,b) => a[column] < b[column] ? 1 : -1);
      buildTable(response)
    })
  }
}

如果我按姓名或姓氏排序,效果很好,但是,我还需要按州专门排序。我有一个 data 属性,但即使我将它设置为 adress.state 时,它​​也不会工作。有没有办法重构此代码以访问 address.state?

标签: javascript

解决方案


我建议创建单独的函数来按地址排序,这样就可以更轻松地处理数据,而无需在当前函数中添加大量 if。

我可以考虑的另一种方法是将对象展平以进行排序,然后您将能够按所有对象属性进行排序并带回原始结构。


推荐阅读