You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何访问API返回的二层嵌套字段并实现按adress.state排序

问题根源

你传入adress.state作为column参数时,代码直接使用a[column]的方式只会读取对象的一级属性,也就是尝试找键名为adress.state的字段,而非读取adress下的state二级字段,因此无法拿到正确值导致排序失效。

重构方案

新增一个嵌套属性取值工具函数,自动拆分路径逐层读取属性值,同时优化原有重复的排序逻辑,重构后代码如下:

// 嵌套属性取值工具函数
function getNestedValue(obj, path) {
  return path.split('.').reduce((current, key) => {
    return current ? current[key] : undefined;
  }, obj);
}

function sortInfo(e) {
  const column = e.target.dataset.column;
  const order = e.target.dataset.order;
  const changeData = e.target;
  // 切换排序方向
  const newOrder = order === 'desc' ? 'asc' : 'desc';
  changeData.setAttribute('data-order', newOrder);

  searchResult.fetchResult().then(response => {
    response.sort((a, b) => {
      const valA = getNestedValue(a, column);
      const valB = getNestedValue(b, column);
      // 统一排序逻辑,根据方向返回对应结果
      if (newOrder === 'asc') {
        return valA > valB ? 1 : -1;
      } else {
        return valA < valB ? 1 : -1;
      }
    });
    buildTable(response);
  });
}

使用方式

保持你给state对应排序按钮的data-column属性设置为adress.state即可,现在代码可以正确读取二级嵌套字段完成排序,原有一级字段的排序功能也不受影响。

内容的提问来源于stack exchange,提问作者Anton Karpenko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:57:00