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

React JS嵌套对象排序求助:按Islamabad Serena Hotel正数值降序排列

按嵌套对象指定键值降序排序方案

假设你的数据结构类似下面这种(以JavaScript为例):

const rawData = {
  "entry-001": {
    nestedObj: {
      "Islamabad Serena Hotel": 76
    }
  },
  "entry-002": {
    nestedObj: {
      "Islamabad Serena Hotel": 91
    }
  },
  "entry-003": {
    nestedObj: {
      "Islamabad Serena Hotel": 83
    }
  }
};

实现步骤:

  1. 将对象转为可排序数组
    原生对象本身无法直接排序,先用Object.entries()把它拆成包含键和对应嵌套对象的数组:

    const dataArray = Object.entries(rawData);
    
  2. 按目标数值降序排序
    使用数组的sort()方法,在回调中提取每个嵌套对象里"Islamabad Serena Hotel"的数值,按从大到小排序:

    dataArray.sort((a, b) => {
      // 取出目标数值,若不存在则默认设为0(可根据需求调整)
      const valueA = a[1].nestedObj["Islamabad Serena Hotel"] || 0;
      const valueB = b[1].nestedObj["Islamabad Serena Hotel"] || 0;
      // 降序排序:b的值减a的值
      return valueB - valueA;
    });
    
  3. (可选)转回对象格式
    如果需要保持对象结构,用Object.fromEntries()把排序后的数组转回对象:

    const sortedData = Object.fromEntries(dataArray);
    

完整代码示例:

const rawData = {
  "entry-001": { nestedObj: { "Islamabad Serena Hotel": 76 } },
  "entry-002": { nestedObj: { "Islamabad Serena Hotel": 91 } },
  "entry-003": { nestedObj: { "Islamabad Serena Hotel": 83 } }
};

// 转换为数组并排序
const sortedArray = Object.entries(rawData).sort((a, b) => {
  const valA = a[1].nestedObj["Islamabad Serena Hotel"] || 0;
  const valB = b[1].nestedObj["Islamabad Serena Hotel"] || 0;
  return valB - valA;
});

// 转回对象(可选)
const sortedObj = Object.fromEntries(sortedArray);

console.log(sortedObj);
// 输出结果会按91、83、76的顺序排列对应条目

注意事项:

  • 如果你的嵌套层级和示例不同,只需调整a[1].nestedObj这部分路径,匹配实际的数据结构即可。
  • 若存在目标键缺失或值非正数的情况,可以在排序时添加过滤逻辑,比如:
    // 只保留目标值为正数的条目
    const filteredArray = Object.entries(rawData).filter(item => {
      const val = item[1].nestedObj["Islamabad Serena Hotel"];
      return typeof val === 'number' && val > 0;
    }).sort(/* 排序逻辑同上 */);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 16:10:27