相关疑难解决方法(0)

按值排序JSON

我有一个非常简单的JSON对象,如下所示:

{
   "people":[
      {
         "f_name":"john",
         "l_name":"doe",
         "sequence":"0",
         "title":"president",
         "url":"google.com",
         "color":"333333"
      },
      {
         "f_name":"michael",
         "l_name":"goodyear",
         "sequence":"0",
         "title":"general manager",
         "url":"google.com",
         "color":"333333"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

现在,这是从我的服务器端代码返回的,我运行jQuery.each以形成必要的html并输出结果.

现在我正在做的是向包含我的排序信息的服务器发送一个AJAX调用...例如"Title DESC"并重新运行SQL查询以返回新的结果集.但我想避免这种情况,并使用jQuery对生成的JSON进行排序,以防止往返服务器和多个数据库访问.

我怎样才能使用jQuery实现这一目标?

jquery json

59
推荐指数
4
解决办法
20万
查看次数

在Chrome中对对象数组进行排序

编辑:正如下面kennytm和调查自己后指出,根据ECMA规范,当两个物体被确定为在自定义排序相同,JavaScript是不是必须离开以相同的顺序这两个对象.Chrome和Opera是唯一两种选择不稳定排序的主要浏览器,但其他浏览器包括Netscape 8&9,Kazehakaze,IceApe和其他一些浏览器.Chromium团队已将此错误标记为"按预期工作",因此不会"修复".如果您需要数组在值相等时保持其原始顺序,则需要使用一些其他机制(例如上面的那个).0排序对象时返回实际上是没有意义的,所以不要打扰.


我刚刚得到一份报告,我写的一些代码在Chrome上打破了.我已经将它跟踪到我用于对对象数组进行排序的自定义方法.我真的很想把它称为一个错误,但我不确定是不是.

在对所有其他浏览器排序对象数组时,如果两个对象解析为相同的值,则更新后的数组中的顺序保持不变.在Chrome中,他们的订单似乎是随机的.在Chrome和您想要的任何其他浏览器中运行以下代码.你应该明白我的意思.

我有两个问题:

首先,我是否正确地假设当您的自定义分拣机返回时0,两个比较的项目保持其原始顺序(我有一种感觉我错了).

第二,有什么好方法可以解决这个问题吗?我唯一能想到的是在排序之前将自动递增数字作为属性添加到数组的每个成员,然后在两个项目sort将resolve与同一值进行比较时使用该值.换句话说,永远不会返回0.

这是示例代码:

var x = [
{'a':2,'b':1},
{'a':1,'b':2},
{'a':1,'b':3},
{'a':1,'b':4},
{'a':1,'b':5},
{'a':1,'b':6},
{'a':0,'b':7},
]

var customSort = function(a,b) {
    if (a.a === b.a) return 0;
    if (a.a > b.a) return 1;
    return -1;
};

console.log("before sorting");
for (var i = 0; i < x.length; i++) {
    console.log(x[i].b);
}
x.sort(customSort);

console.log("after sorting");
for (var i = 0; i < x.length; i++) {
    console.log(x[i].b); …
Run Code Online (Sandbox Code Playgroud)

javascript sorting google-chrome

21
推荐指数
3
解决办法
1万
查看次数

这是Array.sort()中的错误吗?

这很难相信,但这看起来像谷歌Chrome的Javascript引擎中的一个错误.我错过了什么吗?

Chrome Javascript控制台会话:

> x = [10, 1]
> x.sort()
[1, 10]
> // OK.  But now try this.
> x = [10, 2]
> x.sort()
[10, 2]
Run Code Online (Sandbox Code Playgroud)

它没有排序!

我目前正在运行版本24.0.1312.57 m

javascript sorting

4
推荐指数
2
解决办法
7178
查看次数

为什么 Array.prototype.sort() 在 Chrome 开发工具中不起作用?

const arr = [{name:'Suzanne'},{name:'Jim'},{name:'Trevor'},{name:'Amanda'}];

arr.sort((a,b)=>a.name > b.name);
Run Code Online (Sandbox Code Playgroud)

我想按字母顺序(A->Z)对数组名称中的元素(对象)进行排序。当我使用 node(v8.4.0) 和 safari 开发工具(控制台)中的代码时,它运行良好。

但它在 chrome 开发工具控制台(v70.0.3538.110)中不起作用。chrome 控制台中有代码的结果。

在此处输入图片说明

在我看来,代码没有错。我不知道为什么代码不能正常工作。

javascript arrays sorting google-chrome ecmascript-6

1
推荐指数
1
解决办法
842
查看次数