data = { a:2, b:1, c:3,}
我觉得你这个问题, 关键在理解JS中数组和对象的差别.
首先data这个变量是一个对象, 而非数组. 所以从概念上来讲, 对象内部的属性不存在排序的这个概念. 个人不主张对对象的属性排序.
我在node.js v0.8.16中, 测试for in的输出和定义该属性的先后有关. 不清楚其他比如浏览器中各个js解释器的情况.
所以,可以重新对该对象定义下即可. 其他浏览器等js中的情况, 请自省测试下.
我测试的代码如下
function sortObject(obj) {var arr = [];for (var prop in obj) {if (obj.hasOwnProperty(prop)) {arr.push({'key': prop,'value': obj[prop]});}}arr.sort(function(a, b) { return a.value - b.value; });
var obj = {};
for (var i=0; i<arr.length; i++){var a = arr[i];obj[a.key] = a.value;}return obj;}var data = {d:5,a:2,b:1,c:3,};
var data = sortObject(data);
for(var x in data){console.log(x);}
console.log(data);
node中输出为:
bacd{ b: 1, a: 2, c: 3, d: 5 }
其实这个排序很简单,使用冒泡排序的方法就可以了!我给java的示例代码吧!太晚了,不想再写,自己试着写下吧!public static int[] BubbleSort(int[] array){int length = array.Length;for (int i = 0; i <= length - 1; i++){for (int j = length - 1; j > i; j--){if (array[j] < array[j - 1]){int temp = array[j];array[j] = array[j - 1];array[j - 1] = temp;}}}return array;}
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
我之所以活到现在的全部意义,是为了此刻能对你说,我爱你,我会在你身后永远守护你。
文章 0 评论 0
接受
发布评论
评论(2)
我觉得你这个问题, 关键在理解JS中数组和对象的差别.
首先data这个变量是一个对象, 而非数组. 所以从概念上来讲, 对象内部的属性不存在排序的这个概念. 个人不主张对对象的属性排序.
我在node.js v0.8.16中, 测试for in的输出和定义该属性的先后有关. 不清楚其他比如浏览器中各个js解释器的情况.
所以,可以重新对该对象定义下即可. 其他浏览器等js中的情况, 请自省测试下.
我测试的代码如下
function sortObject(obj) {
var arr = [];
for (var prop in obj) {
if (obj.hasOwnProperty(prop)) {
arr.push({
'key': prop,
'value': obj[prop]
});
}
}
arr.sort(function(a, b) { return a.value - b.value; });
var obj = {};
for (var i=0; i<arr.length; i++)
{
var a = arr[i];
obj[a.key] = a.value;
}
return obj;
}
var data = {
d:5,
a:2,
b:1,
c:3,
};
var data = sortObject(data);
for(var x in data)
{
console.log(x);
}
console.log(data);
node中输出为:
b
a
c
d
{ b: 1, a: 2, c: 3, d: 5 }
其实这个排序很简单,使用冒泡排序的方法就可以了!我给java的示例代码吧!太晚了,不想再写,自己试着写下吧!
public static int[] BubbleSort(int[] array)
{
int length = array.Length;
for (int i = 0; i <= length - 1; i++)
{
for (int j = length - 1; j > i; j--)
{
if (array[j] < array[j - 1])
{
int temp = array[j];
array[j] = array[j - 1];
array[j - 1] = temp;
}
}
}
return array;
}