好吧,我或我合作的人在这里打破了语法,我不确定在哪里,因为调试器给了我一些随机的错误。无论如何这里是功能,我想我在某个地方错过了一个支架,但这只是因为某些原因而躲避我。
var sort_by = function(field, reverse, primer) {
var key = function (x) {return primer ? primer(x[field]) : x[field]};
return function (a,b) {
var A = key(a), B = key(b);
return ((A < B) ? -1 : (A > B) ? +1 : 0)) * [-1,1][+!!reverse];
}
}
答案 0 :(得分:3)
行上有一个额外的右括号
return ((A < B) ? -1 : (A > B) ? +1 : 0))
应该是
return ((A < B) ? -1 : (A > B) ? +1 : 0) ...etc
答案 1 :(得分:1)
如果无论如何都能提供调试器错误将会很有用。我在Chrome开发者控制台中对其进行了处理,但它出现了错误:
SyntaxError:意外的令牌)
这使得很容易找到这条断线:
return ((A < B) ? -1 : (A > B) ? +1 : 0)) * [-1,1][+!!reverse];
你有不平衡的括号。它应该是:
return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1,1][+!!reverse];
答案 2 :(得分:1)
这里有一个额外的结束括号。删除它。
return ((A < B) ? -1 : (A > B) ? +1 : 0)) * [-1,1][+!!reverse];
另外,分号一切。
var sort_by = function(field, reverse, primer) {
var key = function(x) {
return primer ? primer(x[field]) : x[field];
};
return function(a, b) {
var A = key(a), B = key(b);
return ((A < B) ? -1 : (A > B) ? +1 : 0) * [-1, 1][+!!reverse];
};
};