我遇到了这个问题,我无法找出原因,也无法在谷歌上找到任何解释。我有一个$ http.get方法从URL中检索一些数据,成功后我正在排序响应。但是当我在谷歌浏览器上运行页面时,我收到错误" TypeError:response.sort不是函数"
var orderOfGroups = ["alpha", "beta", "gamma", "delta"];
$http.get(url)
.success( function (response, status, headers, config) {
response.sort( function(a, b) {
var aname = orderOfGroups.indexOf(a.team);
var bname = orderOfGroups.indexOf(b.team);
return bname-aname;
});
});
我收到了#34; response.sort"线。这也只发生在谷歌浏览器中,我在firefox和IE10中进行了测试,并且它在这些浏览器上运行良好。 我收到的json数据(响应)具有以下格式
[
{
team: "gamma",
value: "p"
},
{
team: "alpha",
value: "q"
},
......
]
请告诉我如何解决这个问题?
答案 0 :(得分:6)
您的response
不是数组。它可能是一个包含数组的属性(例如response.data
)或数组的字符串版本的对象,然后您需要使用JSON.parse
并将字符串转换为数组。
无论如何,sort是在Array的原型上 - 这意味着所有数组都将拥有该属性 - 这与AngularJS
或<{1}}相关 google chrome
。