Javascript 基于值对具有键值对的对象进行排序

Javascript 基于值对具有键值对的对象进行排序,javascript,jquery,arrays,sorting,javascript-objects,Javascript,Jquery,Arrays,Sorting,Javascript Objects,我已经声明了一个对象 var obj={ “1”:“谷歌”, “2”:“雅虎”, “3”:“msn”, “4”:“stackoverflow”, “5”:“github”, “6”:“jsfiddle”, “7”:“亚马逊”, “8”:“易趣” }; 我需要根据值进行排序,然后将其推送到数组中,然后显示数组。 我已根据值对对象进行排序,并将其推入数组。但在数组的显示上,值是根据键排序的。 我找到了发生这种情况的原因,也就是说,因为键是数字,在推到数组或对象时,值会根据键进行默认排序。我不想更改键

我已经声明了一个对象

var obj={ “1”:“谷歌”, “2”:“雅虎”, “3”:“msn”, “4”:“stackoverflow”, “5”:“github”, “6”:“jsfiddle”, “7”:“亚马逊”, “8”:“易趣” };

我需要根据值进行排序,然后将其推送到数组中,然后显示数组。 我已根据值对对象进行排序,并将其推入数组。但在数组的显示上,值是根据键排序的。 我找到了发生这种情况的原因,也就是说,因为键是数字,在推到数组或对象时,值会根据键进行默认排序。我不想更改键中的值。请让我知道,有没有其他方法可以克服这个问题

提前感谢,, 钱丹

简单地创建一个稀疏数组

创建以下内容:

[undefined, "google", "yahoo", "msn", "stackoverflow", "github", "jsfiddle", "amazon", "ebay"]
或者您可以简单地从中创建一个数组,执行以下操作:

Object.setPrototypeOf(obj,Array.prototype);

使用此函数可以转换为数组

var arr =  $.map(obj, function(el) { return el });

然后,您只需要根据需求进行排序

好吧,谈到排序,我想指出的是,您实际上只能在JS中对数组进行排序。我的意思是你也可以“排序”一个对象,但是在这种情况下,当你稍后遍历对象时,顺序是不能保证的

另一方面,在对数组排序时,保留键是没有意义的,因为如果这样做,值的最终顺序将基于键,因此按值排序变得毫无意义

我将更改输入的格式并对一组对象进行排序—它将允许您保留键(以及其他属性,如果需要的话),并基于值建立顺序。比如说,你的输入是

var arr=[{id:“10”,国家:“印度”},{id:“12”,国家:“澳大利亚”},{id:“17”,国家:“中国”}];
对于(变量i=1;i=0和&temp['country']b.country;
});
*/

控制台日志(arr)不清楚你的意思是什么?按字母排序?另外,您如何添加到数组?当您可以使用数组时,为什么要使用对象?例如:输入:{“10”:“印度”、“12”:“澳大利亚”、“17”:“中国”}。输出:{“12”:“澳大利亚”、“17”:“中国”、“10”:“印度”}数组或对象任何东西都可以。但这些数据应该根据values@Pogrindis:我需要根据值对对象或数组进行排序,但键应为数字。请添加所需的数组。对象的键实际上无法排序。我不知道在超大对象上的性能(10k行的顺序),但这有助于meI解决同样的问题,我可以按键对对象进行排序,但最终输出不一样:(.这里是使用lodash
(inputObject.toPairs().sortBy(0).fromPairs().value()的简单排序);
var arr =  $.map(obj, function(el) { return el });