在数组

时间:2016-09-02 13:19:35

标签: javascript arrays

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

我想提醒自己所有,而不是两个行星的距离的平均值,即使两者都是在这种情况下,但我最终想要一个数组这比两个人多得多。现在,它只是警告数组列表中最后一条记录的距离,这很奇怪。我认为这是所有人的平均水平。

此外,我如何编程"距离"的最小和最高数量?数组中的属性,然后提醒"主机名"用它。因此,如果我有一个按钮并且我点击"最近",将会提醒"Distance [pc]"中最低号码的主机名。我只需要一个代码示例" Distance",所以我知道如何对所有其他变量做同样的事情。

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

顺便说一下,列表是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);

2 个答案:

答案 0 :(得分:2)

在你的周期中,你总是会覆盖你的可变距离,而不是添加它们。

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

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

修改

这是一个有效的jsFiddle

您需要初始化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);

答案 1 :(得分:2)

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;