对简单的 JSON 对象进行排序 [重复]
Posted
技术标签:
【中文标题】对简单的 JSON 对象进行排序 [重复]【英文标题】:Sorting simple JSON object [duplicate] 【发布时间】:2012-01-04 21:08:32 【问题描述】:可能重复:Sorting javascript Object by property value
由于我注意到浏览器无法保证通过 ajax 调用 (reference) 对 JSON 元素进行排序,因此在 ajax 调用之后使用 javascript 对 JSON 元素进行排序时遇到了一些麻烦。
我找到了一些关于这个问题的主题,但是没有一个明确的解决方案来解决我的 JSON 对象的简单结构。我刚得到一个包含大量数据的段。 我知道有很多关于此的主题,即使在 *** 上也是如此,但没有一个主题可以处理这种简单的 json 结构。
例如:
"158":"Banana",
"265":"Pear",
"358":"Apple",
"864":"Peach"
如何根据水果名称而不是 id 对这个对象进行排序? 我想把这个对象放在最后:
"358":"Apple",
"158":"Banana",
"864":"Peach"
"265":"Pear",
提前致谢。
【问题讨论】:
见:***.com/questions/8175093/… underscore.js 有一个不错的sortBy()
函数:documentcloud.github.com/underscore/#sortBy
对象没有任何特定的顺序。如果您希望它们按顺序排列,请改用(对象)数组。
那不是 JSON 对象。 JSON 是一种字符串表示法。你解析 JSON字符串成一个object literal.
【参考方案1】:
var kk =
"158":"Banana",
"265":"Pear",
"358":"Apple",
"864":"Peach"
var keys = [];
var datas =
$.each(kk, function(key, value)
keys.push(value)
datas[value] = key;
)
var aa = keys.sort()
var sorted =
$.each(aa, function(index, value)
sorted[datas[value]] = value;
)
【讨论】:
恰恰相反。我想对不在 id 上的名称进行排序,但我正在尝试使用您的代码示例的解决方案。 对于每一个你用来创建排序对象,都可以用来解决一个问题。但请记住这一点 '对象没有任何特定的顺序。如果您希望它们按顺序排列,请改用(对象)数组'。感谢您的宝贵时间。【参考方案2】:var someObject =
"158":"Banana",
"265":"Pear",
"358":"Apple",
"864":"Peach"
;
//flip the name/value pairs
Object.prototype["reverseObject"] = function()
var name;
var newObject = ;
for(name in this)
if(typeof this[name] !== 'function')
newObject[this[name]] = name;
return newObject;
var reversedObject = someObject.reverseObject();
console.log(reversedObject);
var i;
var properties = [];
//get all the property names
$.each(reversedObject, function(key, value)
if(reversedObject[key] !== this)
properties.push(key);
);
properties.sort();
var sortedObject = [];
//iterate the array using the order specified
for(i = 0; i < properties.length; i += 1)
sortedObject[properties[i]] = reversedObject[properties[i]];
//document.writeln(properties[i] + " : " + reversedObject[properties[i]]);
var sortedObject = sortedObject.reverseObject();
console.log(sortedObject);
Fiddle
这将创建一个按字母顺序排列的属性名称数组。然后,该数组用于索引对象。这会产生您请求的确切对象。
【讨论】:
以上是关于对简单的 JSON 对象进行排序 [重复]的主要内容,如果未能解决你的问题,请参考以下文章