2016-05-31 67 views
0

我目前正在試圖對我的json數據做一些數學運算。但它沒有做我想做的事。我做了一個循環,這樣計算蘋果的每一行(由我angularJS的工作方式)對JSON數據做數學

這裏是我的代碼,我正在嘗試處理數據的部分:

angular.module('recordService', []).factory('recordService', ['$http', function($http) { 
    var url; 
    var recordService = []; 
    recordService.getAll = function(callback) { 
    url = "http://localhost/app/www/database/json.php"; 
    $http({ 
     url: url 
    }).then(function(rs) { 
     callback(rs.data); 

     function logArrayElements(element, index, array) { 
     var thdi = rs.data[index].THDI1_avg; 
     console.log(thdi + 5); 
     } 
     rs.data.forEach(logArrayElements); 
    }, function(err) { 
     console.log(err) 
    }) 
    } 

,你可以看到我試圖從我的數組中取一個元素並添加5個元素(這只是一個測試;我想稍後再做一些更高級的數學)。我可以在console.log看到它沒有做我想要的。

例如,如果我的數據是10.25,那麼當我想要15.25時,我得到10.255。關於我在做什麼的任何想法都是錯誤的?

在此先感謝

+7

好要添加到字符串.... – epascarello

+0

'parseFloat(THDI)+ 5' ...... – War10ck

+0

另一種解決方案可能是:+ THDI + 5個 – gaetanoM

回答

1

您需要爲@epascarello提到的JSON數據轉換成一個數字。 JSON被串行化爲字符串。

function logArrayElements(element, index, array) { 
    var thdi = Number(rs.data[index].THDI1_avg); 
    console.log(thdi + 5); 
} 
+0

感謝您的快速解答。當我看到它時似乎很明顯。但有一件事很奇怪:我在控制檯中得到了一些「NaN」。我發現只有當我的數值不是整數時,我纔會得到它們。任何想法如何解決這個問題? – coco

+0

有一個isNaN()函數可以用來驅動你的邏輯。 – Juan

1

您得到10.255的原因是,因爲您要將5添加到字符串中。

嘗試:

console.log(parseFloat(thdi) + 5); 

更新就不是一個數字:

有幾個方法,你可以檢查值是否是一個數字。

isNaN()

if(isNaN(thdi)) { 
console.log("Not a number"); 
} else { 
console.log("Is a number"); 
console.log(parseFloat(thdi) + 5); 
} 

的try/catch

try{ 
console.log(parseFloat(thdi) + 5); 
} catch(err) { 
console.log("not a number"); 
} 

編輯:不會給期望的結果。


的typeof

if(typeof thdi === 'number') { 
    console.log("Is a number"); 
    console.log(parseFloat(thdi) + 5); 
} else { 
console.log("not a number"); 
} 

另見:How do you check that a number is NaN in JavaScript?

注:如果THDI是不確定的,那麼isNaN()將拋出一個錯誤。 typeof將能夠處理未定義的。

+0

感謝您的回答。正如我對@Juan所說的,當我的號碼不是整數時,我在控制檯中得到了一些「NaN」。如果您有任何想法 – coco

+0

請參閱我的更新。希望能給你一個處理它的不同方法的好主意。 – seN

+0

謝謝你的回答。我發現我的數字被定義爲NaN,因爲就像我是法國人,我的數字是這樣顯示的:1,x。 Js期待一個點。我只需在我的php文件中進行替換以解決該問題 – coco