Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何按字母顺序对单个对象排序?_Javascript_Jquery - Fatal编程技术网

Javascript 如何按字母顺序对单个对象排序?

Javascript 如何按字母顺序对单个对象排序?,javascript,jquery,Javascript,Jquery,我想按字母顺序对单个对象排序 维护其键和值,例如: 输入是:{2:“a”,3:“e”,4:“h”,5:“g”,6:“d”,7:“i”,8:“c”,9:“f”,10:“b”} 我需要输出:{2:“a”,10:“b”,8:“c”,6:“d”,3:“e”,9:“f”,5:“g”,4:“h”,7:“i”} 以下是我的js代码: var myObject = {2: "a", 3: "e", 4: "h", 5: "g", 6: "d", 7: "i", 8: "c", 9: "f", 10: "b"}

我想按字母顺序对单个对象排序

维护其键和值,例如:

输入是:{2:“a”,3:“e”,4:“h”,5:“g”,6:“d”,7:“i”,8:“c”,9:“f”,10:“b”}

我需要输出:{2:“a”,10:“b”,8:“c”,6:“d”,3:“e”,9:“f”,5:“g”,4:“h”,7:“i”}

以下是我的js代码:

var myObject = {2: "a", 3: "e", 4: "h", 5: "g", 6: "d", 7: "i", 8: "c", 9: "f", 10: "b"}

keysSorted = Object.keys(myObject).sort(function(a,b){return myObject[a]-myObject[b]});
console.log(keysSorted);
这是我的小提琴:

如果您只想对属性名数组进行排序,请将其用于比较字符串

var myObject={
2:“a”,
3:“e”,
4:“h”,
5:“g”,
6:“d”,
7.“我”,
8:“c”,
9:“f”,
10:“b”
}
keysorded=Object.keys(myObject).sort(函数a,b){
返回myObject[a].localeCompare(myObject[b])
});
console.log(键排序)奇怪的要求

您的意思是需要console.log()的输出与您编写的类似? (我认为这是不可能的。)


为了完成这项特定的工作,请尝试创建一个以alpha为键、数字为值的新映射,尽管它看起来与您希望的不一样,但对象是无序映射,因此您无法对其进行排序。
但是,您可以单独获取排序的键和值。
它将是这样的:

let myObject={2:“澳大利亚”,3:“中国”,4:“日本”,5:“泰国”,6:“印度”,7:“马来西亚”,8:“韩国”,9:“香港”,10:“台湾”,11:“菲律宾”,12:“越南”,13:“法国”,14:“英国”,15:“德国”,16:“瑞典”,17:“意大利”,18:“希腊”,19:“西班牙”,20:“奥地利”,21:“荷兰”,22:“比利时”,23:“瑞士”,24:“阿拉伯联合酋长国”,26:“乌克兰”,27:“俄罗斯联邦”,29:“葡萄牙”,30:“沙特阿拉伯”,31:“丹麦”,33:“挪威”,34:“美国”,35:“加拿大”,36:“墨西哥”,38:“波兰”,39:“捷克共和国”,40:“爱尔兰”,41:“保加利亚”,42:“芬兰”,43:“斯洛文尼亚”,44:“罗马尼亚”}
让value=Object.keys(myObject.map)(k=>myObject[k]).sort();
让keys=Object.keys(myObject)
.sort((a,b)=>values.indexOf(myObject[a])-values.indexOf(myObject[b]);

console.log(值、键);
您可以按特定顺序创建对象的
数组
映射

var myObject={
2:“a”,
3:“e”,
4:“h”,
5:“g”,
6:“d”,
7.“我”,
8:“c”,
9:“f”,
10:“b”
};
const keys=Array.from({
长度:Object.keys(myObject).length
});
让order=“abcdefghijklmnopqrstuvxyz”;
设arr=[];
常量映射=新映射();
for(让键入myObject){
arr[order.indexOf(myObject[key])]={
[键]:myObject[键]
};
}
对于(让arr的支柱){
贴图集(道具[对象键(道具)],道具)
}
对于(让地图的道具){
控制台日志(道具)
}
console.log(arr);
您可以尝试以下方法:

var keysSorted = Object.keys(myObject).sort(function (a, b) {
    return myObject[a].localeCompare(myObject[b])
});
var SortedList = [];
keysSorted.forEach(function (value) {
    SortedList.push(myObject[value]);
});

对象属性没有任何顺序…。这有什么需要?@PranavCBalan实际上我当前的项目只是这样,我不能更改对象…。我只能这样对它进行排序。键的排序非常好,但是值呢:)@AkshayKumar:你需要根据排序的键数组检索值…@AkshayKumar你可以使用SortedList作为你的输出。
 const myObject = {
  2: "a",
  3: "e",
  4: "h",
  5: "g",
  6: "d",
  7: "i",
  8: "c",
  9: "f",
  10: "b"
}

const keysSorted = Object.keys(myObject).sort(function(a, b) {
      return myObject[a].localeCompare(myObject[b])
    });
    console.log(keysSorted);

const sortedObj={};
keysSorted.forEach(key)={
//convert key to string because in JS,Object which has keys as number type are automatically sorted in ascending//
sortedObj[' '+key] = myObject[key];
})
console.log(sortedObj);