需求:一个list对象中有多个数组,每个数组中有多条数据,每条数据里有一个排序字段typeOrder,如何根据这一个字段让数组按顺序展示在页面上
对象格式示例:
list:{
12:[
{
id:1,
typeOrder: 5
},
{
id:2,
typeOrder: 5
}
],
34:[
{
id:3
typeOrder: 2,
},
{
id:4
typeOrder: 2,
},
{
id:5
typeOrder: 2
}
],
56:[
{
id:6
typeOrder: 1,
},
{
id:7
typeOrder: 1,
},
{
id:8
typeOrder: 1
}
],
}
展示在页面上的顺序
56:[
{
id:6
typeOrder: 1,
},
{
id:7
typeOrder: 1,
},
{
id:8
typeOrder: 1
}
],
34:[
{
id:3
typeOrder: 2,
},
{
id:4
typeOrder: 2,
},
{
id:5
typeOrder: 2
}
],
12:[
{
id:1,
typeOrder: 5
},
{
id:2,
typeOrder: 5
}
],
有没有什么办法可以做到这个效果!
let list = {
100: [
{
id: 6,
typeOrder: 3,
},
{
id: 7,
typeOrder: 3
},
{
id: 8,
typeOrder: 3
}
],
12: [
{
id: 1,
typeOrder: 5
},
{
id: 2,
typeOrder: 5
}
],
34: [
{
id: 3,
typeOrder: 2,
},
{
id: 4,
typeOrder: 2,
},
{
id: 5,
typeOrder: 2
}
],
56: [
{
id: 6,
typeOrder: 1,
},
{
id: 7,
typeOrder: 1,
},
{
id: 8,
typeOrder: 1
}
],
};
// 将list对象转换为Map对象,并按照typeOrder字段进行排序
const sortedList = new Map(Object.entries(list).sort((a, b) => a[1][0].typeOrder - b[1][0].typeOrder));
let newList = {};
// 遍历排序后的Map对象,将每个元素加入新的newList对象
sortedList.forEach((value, key) => {
newList[key] = value;
});
console.log(newList);
【以下回答由 GPT 生成】
可以使用以下步骤来根据一个对象中多个数组的某个属性进行排序:
Array.prototype.sort()
方法进行排序,通过传递一个排序函数作为参数来根据属性typeOrder
对数组进行排序。以下是用JavaScript代码实现上述步骤的示例:
// 原始对象
var list = {
12:[
{
id: 1,
typeOrder: 5
},
{
id: 2,
typeOrder: 5
}
],
34:[
{
id: 3,
typeOrder: 2
},
{
id: 4,
typeOrder: 2
},
{
id: 5,
typeOrder: 2
}
],
56:[
{
id: 6,
typeOrder: 1
},
{
id: 7,
typeOrder: 1
},
{
id: 8,
typeOrder: 1
}
],
};
// 提取数组并进行排序
var arrays = Object.values(list);
arrays.sort(function(a, b) {
return a[0].typeOrder - b[0].typeOrder;
});
// 重新放回到原始对象中
var sortedList = {};
Object.keys(list).forEach(function(key, index) {
sortedList[key] = arrays[index];
});
console.log(sortedList);
输出结果将会是:
{
56:[
{
id: 6,
typeOrder: 1
},
{
id: 7,
typeOrder: 1
},
{
id: 8,
typeOrder: 1
}
],
34:[
{
id: 3,
typeOrder: 2
},
{
id: 4,
typeOrder: 2
},
{
id: 5,
typeOrder: 2
}
],
12:[
{
id: 1,
typeOrder: 5
},
{
id: 2,
typeOrder: 5
}
]
}
由此可见,数组已按照typeOrder
属性的顺序进行了排序,并根据排序结果重新放回到原始对象中。
【相关推荐】