警告数组内的数据细节

Alerting data specifics inside array

本文关键字:数据 细节 数组 警告      更新时间:2023-09-26

我遇到了一个javascript初学者的问题。我把这些数据存储在一个数组中,我试图提醒数据,看看它是否检出。

我想提醒自己所有的距离的平均值,而不是两个行星的距离的平均值,尽管在这种情况下两者都是全部,但我最终想要一个数组,它保留的远不止两个。现在,它只是提醒数组列表中最后一条记录的距离,这很奇怪。我还以为会是平均水平。

还有,我如何编程数组中"Distance"属性的最小和最大数字,然后用它提醒"Host name"。所以,如果我有一个按钮,我点击"最接近","Distance [pc]"中最低数字的主机名将被提醒。我只需要"距离"的代码示例,所以我知道如何为所有其他变量做同样的事情。

如果你愿意帮忙,谢谢你!

顺便说一句,列表是JSON数据。也许有必要提一下。


    // this array holds the json data, in this case stastics of exoplanets retrieved from nasa's website   
    var arr=        [ {
   "rowid": 684,
   "Host name": "K2-15",
   "Number of Planets in System": 1,
   "Planet Mass or M*sin(i)[Jupiter mass]": null,
   "Planet Radius [Jupiter radii]": 0.221,
   "Planet Density [g": {
      "cm**3]": null
   },
   "Distance [pc]": 437,
   "Effective Temperature [K]": 5131,
   "Date of Last Update": "7/16/2015"
},
 {
   "rowid": 687,
   "Host name": "K2-17",
   "Number of Planets in System": 1,
   "Planet Mass or M*sin(i)[Jupiter mass]": null,
   "Planet Radius [Jupiter radii]": 0.199,
   "Planet Density [g": {
      "cm**3]": null
   },
   "Distance [pc]": 134,
   "Effective Temperature [K]": 4320,
   "Date of Last Update": "7/16/2015"
}];
    //every record is put in a variable		
    var rowid;	
    var hostName;
    var numberOfPlanetsInSystem;
    var planetMass;
    var planetRadius;
    var distance;
    var effectiveTemperature;
    for(var i=0;i<arr.length;i++){
       rowid= arr[i]["rowid"];
       hostName= arr[i]["Host name"];
       numberOfPlanetsInSystem= arr[i]["Number of Planets in System"];
       planetMass= arr[i]["Planet Mass or M*sin(i)[Jupiter mass]"];
       planetRadius= arr[i]["Planet Radius [Jupiter radii]"];
       distance= arr[i]["Distance [pc]"];
       effectiveTemperature= arr[i]["Effective Temperature [K]"];
    };
    //alert to test it out
    alert(distance);
let totalDistance = maxDistance = 0;
let minDistance = arr[0]["Distance [pc]"];
let closestHost = farthestHost = "";
for(let i = 0; i < arr.length; i ++) {
    totalDistance += arr[i]["Distance [pc]"]
    if (arr[i]["Distance [pc]"] < minDistance) {
        minDistance = arr[i]["Distance [pc]"];
        closestHost = arr[i]["Host name"];
    }
    if (arr[i]["Distance [pc]"] > maxDistance) {
        maxDistance = arr[i]["Distance [pc]"];
        farthestHost = arr[i]["Host name"];
    }
}
let meanDistance = totalDistance/arr.length;

在您的循环中,您总是覆盖您的可变距离,而不是添加它们。

使用distance += arr[i]["Distance [pc]"]

+=distance = distance + arr[i]["Distance [pc]"]

编辑

这里是一个工作的jsFiddle

您需要init var distance = 0;

    var distance = 0; //Important!
    var arr = [{
            "rowid": 684,
            "Host name": "K2-15",
            "Number of Planets in System": 1,
            "Planet Mass or M*sin(i)[Jupiter mass]": null,
            "Planet Radius [Jupiter radii]": 0.221,
            "Planet Density [g": {
                "cm**3]": null
            },
            "Distance [pc]": 437,
            "Effective Temperature [K]": 5131,
            "Date of Last Update": "7/16/2015"
        },
        {
            "rowid": 687,
            "Host name": "K2-17",
            "Number of Planets in System": 1,
            "Planet Mass or M*sin(i)[Jupiter mass]": null,
            "Planet Radius [Jupiter radii]": 0.199,
            "Planet Density [g": {
                "cm**3]": null
            },
            "Distance [pc]": 134,
            "Effective Temperature [K]": 4320,
            "Date of Last Update": "7/16/2015"
        }];

    for (var i = 0; i < arr.length; i++) {
        distance += arr[i]["Distance [pc]"];
    };
    alert('Total distance: ' + distance + "'n" + 'Number of planets: ' + arr.length + "'n" + 'Average: ' + distance / arr.length);