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 } } };
实现步骤:
将对象转为可排序数组
原生对象本身无法直接排序,先用Object.entries()把它拆成包含键和对应嵌套对象的数组:const dataArray = Object.entries(rawData);按目标数值降序排序
使用数组的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; });(可选)转回对象格式
如果需要保持对象结构,用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
相关产品推荐
相关产品推荐

