简体   繁体   English

JavaScript 操作顺序

[英]JavaScript order of operations

I am trying to retrieve info from an object but I can't seem to get it in the correct order.我试图从一个对象中检索信息,但我似乎无法以正确的顺序获取它。 Doing it this way, total is always equal to null .这样做, total总是等于null

How do I ensure ensure that the total is always filled before calculating the average?如何确保在计算平均值之前始终填充total

you can see here that y remains undefined你可以在这里看到 y 仍然未定义

$(function () {
    var data =[];
    var time =[];
    var abc =[
        {"val":"2015-07-02 03:55:00","name":"TIME_STAMP"},
        {"val":"19981","name":"TOTAL"},
        {"val":"2051","name":"\"A\""},
        {"val":"274","name":"\"B\""},
        {"val":"8826","name":"\"C\""},
        {"val":"5351","name":"\"D\""},
        {"val":"2628","name":"\"E\""},
        {"val":"501","name":"\"F\""},
        {"val":"350","name":"\"G\""},
        {"val":" ","name":"\"H\" "}];
    var total = null;

    $.each(abc,function(i,el){
        if (el.name == "TIME_STAMP") {
            time.push({ name: el.name, y: parseInt(el.val) });
        }
        else if (el.name == "TOTAL") {
            total = parseInt(el.val);
        }
        else if (total != null) {
            var p = parseFloat(el.val) / total * 100;
            data.push({name: el.name, y: p});
            console.log(el.name + " " + el.y);
        }
    });
 });

Change this line...改变这一行...

console.log(el.name + " " + el.y);

to this...到这...

console.log(el.name + " " + p);

There is no el.y .没有el.y

Alternatively, create el.y instead of p ...或者,创建el.y而不是p ...

$.each(abc,function(i,el){
    if (el.name == "TIME_STAMP") {
        time.push({ name: el.name, y: parseInt(el.val) });
    }
    else if (el.name == "TOTAL") {
        total = parseInt(el.val);
    }
    else if (total != null) {
        el.y = parseFloat(el.val) / total * 100;
        data.push({name: el.name, y: el.y});
        console.log(el.name + " " + el.y);
    }
});

Adding this check fixed it.添加此检查修复了它。

$.each(json, function(i,el){
        if (el.val != " "){
            if(el.name == "TIME_STAMP" || el.name == "TOTAL"){
                excess.push({name: el.name, y: parseInt(el.val)});
            }else{
                endData.push({name: el.name, y: parseInt(el.val)});
            }
        }
    });

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM