Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 对JSON数据进行数学运算_Javascript_Angularjs_Json - Fatal编程技术网

Javascript 对JSON数据进行数学运算

Javascript 对JSON数据进行数学运算,javascript,angularjs,json,Javascript,Angularjs,Json,我目前正在尝试对我的json数据进行一些数学运算。但这不是我想要的。我做了一个循环,因此计算适用于每一行(通过我使用angularJS的方式) 下面是我试图处理数据的代码部分: angular.module('recordService', []).factory('recordService', ['$http', function($http) { var url; var recordService = []; recordService.getAll = function(c

我目前正在尝试对我的json数据进行一些数学运算。但这不是我想要的。我做了一个循环,因此计算适用于每一行(通过我使用angularJS的方式)

下面是我试图处理数据的代码部分:

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个元素(这只是一个测试;我想稍后再做一些高级数学)。我可以在
控制台中看到。log
这不是我想要的

例如,如果我的数据是10.25,当我想要15.25时,我得到10.255。你知道我做错了什么吗


提前感谢

您需要将JSON数据转换为@epascarello提到的数字。JSON被序列化为字符串

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

您需要将JSON数据转换为@epascarello提到的数字。JSON被序列化为字符串

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

您得到10.255的原因是,因为您正在向字符串添加5

尝试:


关于非数字的更新:

有几种方法可以检查该值是否为数字

isNaN()


尝试/抓住

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");
}
另见:


注意:如果thdi未定义,那么isNaN()将抛出一个错误。typeof将能够处理未定义的问题。

得到10.255的原因是,您正在向字符串添加5

尝试:


关于非数字的更新:

有几种方法可以检查该值是否为数字

isNaN()


尝试/抓住

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");
}
另见:


注意:如果thdi未定义,那么isNaN()将抛出一个错误。typeof将能够处理未定义的问题。

您正在添加到字符串中….
parseFloat(thdi)+5
…另一个解决方案可能是:+thdi+5您正在添加到字符串中….
parseFloat(thdi)+5
…另一个解决方案可能是:+thdi+5感谢您的快速回答。当我现在看到它时,似乎有点明显。但有一件事很奇怪:我在控制台中看到一些“NaN”。我发现只有当我的值不是整数时才能得到它们。你知道如何解决这个问题吗?有一个isNaN()函数,你可以用它来驱动你的逻辑。谢谢你的快速回答。当我现在看到它时,似乎有点明显。但有一件事很奇怪:我在控制台中看到一些“NaN”。我发现只有当我的值不是整数时才能得到它们。你知道如何解决这个问题吗?有一个isNaN()函数,你可以用它来驱动你的逻辑。谢谢你的回答。正如我对@Juan所说,当我的数字不是整数时,我在控制台中得到一些“NaN”。。如果你有任何想法,请查看我的更新。希望这能给你一个不同的处理方法的好主意。谢谢你的回答。我发现我的数字被定义为NaN,因为我是法国人,我的数字是这样显示的:1,x。Js期望一个点。我会在我的php文件中做一个替换来修复这个问题,谢谢你的回答。正如我对@Juan所说,当我的数字不是整数时,我在控制台中得到一些“NaN”。。如果你有任何想法,请查看我的更新。希望这能给你一个不同的处理方法的好主意。谢谢你的回答。我发现我的数字被定义为NaN,因为我是法国人,我的数字是这样显示的:1,x。Js期望一个点。我将在我的php文件中做一个替换来修复这个问题