Javascript 如何通过嵌套按数字键对对象进行排序?
我有一个带有数字键的对象,按某个值分组,这就是它有嵌套的原因:Javascript 如何通过嵌套按数字键对对象进行排序?,javascript,Javascript,我有一个带有数字键的对象,按某个值分组,这就是它有嵌套的原因: const toSort = { '3': { "key1": "test", "key2": "test", }, 'testVslue': { '1': { "key1": "test", "key2": "test"
const toSort = {
'3': {
"key1": "test",
"key2": "test",
},
'testVslue': {
'1': {
"key1": "test",
"key2": "test",
},
'2': {
"key1": "test",
"key2": "test",
},
},
'4': {
"key1": "test",
"key2": "test",
},
}
如何按键增长对对象进行排序,尽管存在嵌套,如下所示:
const sorted = {
'testVslue': {
'1': {
"key1": "test",
"key2": "test",
},
'2': {
"key1": "test",
"key2": "test",
},
},
'3': {
"key1": "test",
"key2": "test",
},
'4': {
"key1": "test",
"key2": "test",
},
}
自己的属性密钥:
按以下顺序检索对象所有自身属性的键:
- 首先,字符串键是整数索引(下一节将解释这些索引),以升序数字顺序排列
- 然后是所有其他字符串键,按照它们添加到对象的顺序
- 最后,按符号键添加到对象的顺序显示所有符号键
const sortedInteger={};
const sortedString={};
Object.keys(toSort).sort().forEach(函数(键){
如果(isNaN(键)){
sortedString[键]=ToSorted[键];
}
否则{
sortedInteger[键]=ToSorted[键];
}
});
控制台日志(分类字符串);
控制台日志(分拣机);
或者如何使用地图
const sortedintegrary=[];
让sortedMap=newmap()
Object.key(toSort).sort().forEach((key)=>{
如果(isNaN(键)){
sortedMap.set(键,toSort[键])
}
否则{
分类排列。按下(键);
}
});
SortedIndegerary.forEach((键)=>{
sortedMap.set(键,toSort[键])
});
console.log(sortedMap)
//地图{
//“测试值”=>{
//'1':{key1:'test',key2:'test'},
//'2':{key1:'test',key2:'test'}
// },
//'3'=>{key1:'test',key2:'test'},
//'4'=>{key1:'test',key2:'test'}
// }
自己的属性密钥:
按以下顺序检索对象所有自身属性的键:
- 首先,字符串键是整数索引(下一节将解释这些索引),以升序数字顺序排列
- 然后是所有其他字符串键,按照它们添加到对象的顺序
- 最后,按符号键添加到对象的顺序显示所有符号键
const sortedInteger={};
const sortedString={};
Object.keys(toSort).sort().forEach(函数(键){
如果(isNaN(键)){
sortedString[键]=ToSorted[键];
}
否则{
sortedInteger[键]=ToSorted[键];
}
});
控制台日志(分类字符串);
控制台日志(分拣机);
或者如何使用地图
const sortedintegrary=[];
让sortedMap=newmap()
Object.key(toSort).sort().forEach((key)=>{
如果(isNaN(键)){
sortedMap.set(键,toSort[键])
}
否则{
分类排列。按下(键);
}
});
SortedIndegerary.forEach((键)=>{
sortedMap.set(键,toSort[键])
});
console.log(sortedMap)
//地图{
//“测试值”=>{
//'1':{key1:'test',key2:'test'},
//'2':{key1:'test',key2:'test'}
// },
//'3'=>{key1:'test',key2:'test'},
//'4'=>{key1:'test',key2:'test'}
// }
嵌套是否只有一层深?@CKE是的,只有一层有什么用,因为对象的元素可以通过其属性直接访问?根据主机系统的需要,它们的内存分配可能会有所不同。我需要按列表中的顺序可视化数据。如果按字母顺序排序,顺序将是3 4 testValue
,这样可以吗?嵌套深度是否只有一级?@CKE是,只有一个,因为对象的元素可以通过其属性直接访问,这有什么用?根据主机系统的需要,它们的内存分配可能会有所不同。我需要按列表中的顺序可视化数据。如果按字母顺序排序,顺序将是3 4 testValue
,可以吗?
console.log(toSort);
// 3 4 testValue
const sorted = {};
Object.keys(toSort).sort().forEach(function(key) {
sorted[key] = toSort[key];
});
console.log(sorted);
// 3 4 testValue