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

JavaScript如何对嵌套结构中104数组前两索引求和并完成排序

原有代码的核心问题
  • 层级取数错误:所有组织数据嵌套在顶层data字段下,原代码直接对整个原始JSON对象取键,仅能获取到"data"单个键,无法读取到"Org 1/2/3"这类具体组织名。
  • 遍历类型错误:Object.keys返回的是字符串格式的组织名称,原代码直接将字符串当做组织对象读取"104"字段,无法获取对应数值。
  • 逻辑偏离需求:没有实现“计算104字段前两位元素和、按和值排序”的核心流程,整体目标和需求不匹配。
正确实现逻辑

流程说明

  • 定位到组织数据所在的层级,将原键值对格式的组织列表转为带排序权重的可遍历数组
  • 逐个组织计算排序权重:提取组织下"104"数组的第0、第1位元素,求和作为排序依据
  • 按权重值对组织数组排序,可按需切换升序/降序规则
  • 将排序后的数组重新组装为和原结构格式一致的对象,完成输出

可运行代码示例

// 替换为你的完整原始JSON数据
const rawData = {
  "data": {
    "Org 1": { /* 原数据内容 */ },
    "Org 2": { /* 原数据内容 */ },
    "Org 3": { /* 原数据内容 */ }
  }
};

// 提取组织集合
const orgEntries = Object.entries(rawData.data);
// 为每个组织绑定排序权重(104字段前两位元素的和)
const orgWithWeight = orgEntries.map(([orgName, orgContent]) => {
  const sortWeight = orgContent["104"][0] + orgContent["104"][1];
  return { orgName, orgContent, sortWeight };
});

// 按权重降序排序:升序则将sortWeight的比较项反向即可
orgWithWeight.sort((a, b) => b.sortWeight - a.sortWeight);

// 重新组装为和原格式一致的结果
const sortedResult = {
  data: orgWithWeight.reduce((result, item) => {
    result[item.orgName] = item.orgContent;
    return result;
  }, {})
};

结果校验

针对你提供的原始测试数据,计算各组织的排序权重:

  • Org 3:0.44 + 0.24 = 0.68
  • Org 1:0.309 + 0.3483 = 0.6573
  • Org 2:0.2059 + 0.3824 = 0.5883
    降序排序后的组织顺序为Org 3 → Org 1 → Org 2,和代码实际输出结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 20:45:09