gpt4 book ai didi

javascript - 根据值对具有键值对的对象进行排序

转载 作者:行者123 更新时间:2023-12-01 03:38:58 26 4
gpt4 key购买 nike

我已经声明了一个对象。

var 对象 = { “1”:“谷歌”, “2”:“雅虎”, “3”:“MSN”, “4”:“堆栈溢出”, “5”:“github”, “6”:“jsfiddle”, “7”:“亚马逊”, “8”:“易趣”};

我需要根据值进行排序,然后将其推送到数组中,并且需要显示该数组。我已根据值对对象进行排序并将其插入数组中。但在数组的显示上,值是根据键排序的。我找到了发生这种情况的原因,即因为键是数字,所以在推送到数组或对象时,值默认根据键排序。我不想更改键中存在的值。请告诉我是否有其他方法可以克服这个问题?

提前致谢,昌丹

最佳答案

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

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

我会更改输入的格式并对对象数组进行排序 - 它将允许您保留键(以及其他属性,如果需要)并根据值建立顺序。所以,可以说,您的输入是

var arr = [{id: "10", country:"India"}, {id:"12", country:"Australia"}, {id:"17", country:"China"}];

for(var i = 1; i < arr.length; i++) {
var temp = arr[i];
for(var j = i - 1; j >= 0 && temp['country'] < arr[j]['country']; j--) arr[j + 1] = arr[j];
arr[j + 1] = temp;
}

// or just use the default JS function:
/*arr.sort(function(a, b) {
return a.country > b.country;
});
*/

console.log(arr);

为了说明我在开始时所说的:这将根据您的需要对对象进行排序,但最终的顺序不会被保留:

var obj = {"10":"India", "12": "Australia","17":"China"}, sorted = {}; // or []
var arr = []; // array of countries

// sorting countries
for(var key in obj) arr.push(obj[key]);
arr.sort();

// creating a data structure "sorted" in a "sorted" order
for(var i = 0; i < arr.length; i++) {
for(var key in obj) if(obj[key] == arr[i]) {
console.log(arr[i]); // seems it kind of writes it in the right order - Aus, Chi, Ind...
sorted[key] = arr[i]; }
}
console.log(sorted); // ...but outputs differently (I use Chrome)

关于javascript - 根据值对具有键值对的对象进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44027236/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com