jssorting多列不工作在IE和Safari

在这个问题中 ,数据是按大多数sorting的,如果大多数数据是相同的,那么当两名员工在同一天工作时,谁select了更多的水果。 如下所示

var workers = [ {"id":"111","name":"April", "most":"7","sd-111222":"1","sd-111333":"2","sd-111444":"2","sd-111555":"2"}, {"id":"222","name":"Bruno", "most":"7","sd-111222":"2","sd-222333":"1","sd-222444":"2","sd-222555":"2"}, {"id":"333","name":"Carlos","most":"6","sd-111333":"1","sd-222333":"2","sd-333444":"2","sd-333555":"1"}, {"id":"444","name":"Dwayne","most":"5","sd-111444":"1","sd-222444":"1","sd-333444":"1","sd-444555":"2"}, {"id":"555","name":"Ed", "most":"5","sd-111555":"1","sd-222555":"1","sd-333555":"2","sd-444555":"1"} ]; workers.sort(function(a,b) { return (a.most == b.most) ? (b["sd-" + a.id + b.id] - a["sd-" + a.id + b.id]) : (b.most - a.most); }); workers.forEach(function(elm){ console.log(elm["id"] + " " +elm["name"]); }); 

在FF / Chrome / Android / Chrome中为Android输出。

  222 Bruno 111 April 333 Carlos 444 Dwayne 555 Ed 

在Safari和IE11(不得不改变警报来查看数据)和铬为IOS我只得到作为次要种类没有得到应用

  111 April 222 Bruno 333 Carlos 444 Dwayne 555 Ed 

看小提琴 。

为什么是这样? 这些浏览器不支持什么? 我阅读了有关forEach的文档,其中没有提到这些浏览器中的任何支持问题,但是我认为这不是foreach中的问题,因为这种情况是事先发生的。

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach

当您尝试在workers查找信息时,您将依靠参数ab的顺序来提供sort的callback:

 b["sd-" + a.id + b.id] - a["sd-" + a.id + b.id] 

这种sorting是不可预测的,并且在浏览器中看起来并不一致。 在Firefox上,我得到以下查找:

 sd-111222 sd-444555 

在Safari上,我得到这些(这是相反的顺序不存在):

 sd-222111 sd-555444 

你不应该依赖这个顺序。 所有你知道的是,你正在比较a名为a的数组中a某个元素到名为b的数组中的其他元素。 你不能确定什么。