JavaScript-javascript数据排序的问题

发布于 2016-10-15 16:44:02 字数 99 浏览 1194 评论 2

data = {
a:2,
b:1,
c:3,
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

晚风撩人 2017-06-09 02:12:32

我觉得你这个问题, 关键在理解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 }

偏爱自由 2016-11-08 08:40:20

其实这个排序很简单,使用冒泡排序的方法就可以了!我给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;
}

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文