计算数组中的最大值
calculate the maximum value in an array
我有一个这样的工厂:
myapp.factory('JobOffersByCounteryFactory', function($http) {
var factory = {
getList: function() {
return $http.get('data/offres_par_pays.JSON')
.then(function(response) {
//....code
}, function(error) {
return 'There was an error getting data';
});
},
getHighestNumberOfOffers: function() {
var n = 0;
$http.get('data/offres_par_pays.JSON')
.then(function(response) {
n = Math.max.apply(Math, response.data['nb']);
}, function(error) {
return 'There was an error getting data';
});
return n;
}
};
return factory;
});
该工厂将返回一个包含两个函数的对象,第二个函数将返回数组中的最大值,在本例中为response.data['nb']
在我的控制器中,我测试了这个功能:
console.log(JobOffersByCounteryFactory.getHighestNumberOfOffers());
但我总是得到值CCD_ 2。
我试图影响n
变量的一些数字,如下所示:n = 12;
,但我总是得到值0
,似乎n
变量的值在$http.get('data/offres_par_pays.JSON').then(function(response)
内没有改变
我该如何解决这个问题?
不能期望asynchronous
调用同步工作。因为你永远不可能知道它什么时候会完成。
为了控制它,你会告诉async
调用已经完成或失败,所以这就是承诺。基本上$http.get
已经返回promise
对象。您应该从方法getHighestNumberOfOffers
返回一个promise,将.then
函数放在它上面,它将在其中进行成功和错误回调。&在promise成功时,您需要返回新计算的变量值。
代码
getHighestNumberOfOffers: function() {
var n = 0;
return $http.get('data/offres_par_pays.JSON')
.then(function(response) {
n = Math.max.apply(Math, response.data['nb']);
return n;
}, function(error) {
return 'There was an error getting data';
});
}
在执行console.log(JobOffersByCounteryFactory.getHighestNumberOfOffers())
时,您将只得到由getHighestNumberOfOffers
返回的promise对象(根据上面的建议)。为了获得确切的值,您应该将console.log
放在getHighestNumberOfOffers
服务方法的.then
函数中。
JobOffersByCounteryFactory.getHighestNumberOfOffers().then(function(n){
console.log(n)
});
相关文章:
- 在Javascript数组中查找绝对最大值
- 按最大值获取数组索引
- 从 JavaScript 中的数组中获取最大值和最小值
- 使用函数从数组中查找最小值和最大值
- 如何在JavaScript中从数组中获取最大值
- 在JavaScript多维数组中查找每个x值的最大值
- 从一个值数组中获取多个最大值
- 如何获取数组中包含最大值的两个对象
- 返回数组中最大值的索引
- 如何找到最大值并从数组中返回它
- 数组中的最大值(值是数组对象中的属性)
- 在多维数组 JavaScript 或 coffeescript 中获取最大值
- 在稀疏 JavaScript 数组中查找最大值
- 在带有对象的数组中查找最小值、最大值
- JavaScript 中的最大公共数组切片
- 如何确定 JSON 对象数组中特定字段的最大值
- 如何在 JavaScript 中的数组列表中查找最大的数组值
- 从父数组中获取长度最大的数组
- JavaScript:最大的数组不工作
- 如何获得最小和最大的数组在javascript