Как получить точный процент в формуле JavaScript - PullRequest
0 голосов
/ 19 октября 2019

Я пытаюсь выяснить, какой будет формула JavaScript, если у меня есть данные в моей базе данных, и вот что я хочу получить:

  • , если данные =10 Я хочу вывести это в 100%, в котором я собираюсь использовать в элементе div высоту

  • , если данные = 65, я хочу вывести это в 0%, в котором я собираюсь использовать высоту элемента div

, и это мой код прямо сейчас, но я не могу понять его:

   var datas = JSON.parse(data);
             var ID, Bio, Non_Bio, Recy, Extra;
             var div = 10;

              ID = datas[0].ID;
              Bio = datas[0].Bio;
              Non_Bio = datas[0].Non_Bio;
              Recy = datas[0].Recy;
              Extra = datas[0]. Extra;

             var obtained = Bio;  
             var obtained2 = Non_Bio;
             var obtained3 = Recy;


             var obt = obtained*100/div;
             var obt2 = obtained2*100/div;
             var obt3 = obtained3*100/div;

             var water1 =   $("#water1").height() + obt;
             var water2 =   $("#water2").height() + obt2;
             var water3 =   $("#water3").height() + obt3;

Ответы [ 2 ]

0 голосов
/ 22 октября 2019

Если математика не может быть решена в голове, это может помочь сделать это на бумаге, особенно при решении пары одновременных уравнений с использованием математики средней школы.

Предполагая, что отношение ультразвука к росту является линейнымВы можете записать это как уравнение линии:

    h = a * u + b    ... 1)

, где h - высота, u - показание ультразвукового датчика, а a и b - постоянные.

Теперь возьмите два калибровочных значения показаний датчика, взятых для пустого и полного бункера, и назовите их c0 и c100 соответственно.

От 1)

  0  = a * c0 + b    ... 2) using the c0 value , and 
100  = a * c100 + b  ... 3) using c100

Решениеэта пара одновременных уравнений идет по линиям

  b = 0 -a*c0          ... from 2)
  b = 100 -a*c100      ... 4) from 3)
  Hence
  0 -a*c0 = 100 -a*c100
  a*c100 - a*c0 = 100
  a = 100/(c100-c0)    ... 5)

и теперь подставляя 4) обратно в 2), дает

  b = 100 - a*c100   ... 6)

В этом тестовом примере уравнения конвертируются в фабрикуфункция, которая возвращает объект с функциями калибровки и высоты calibrate(c0, c100) и height( sensor). Возвращенная высота округляется до ближайшей четверти из-за общего отсутствия точности данных.

function createBin() {
    var a, b;
    function calibrate( c0, c100) {
        a = 100/(c100-c0);
        b = 100 - a*c100;
    }
    function height( sensor) {
        let h = a * sensor + b;
        return Math.round( 4*h)/4;
    }
    return {calibrate, height};
}
    
const bin = createBin();
bin.calibrate (65, 10);

var readings = [67, 65, 37, 10, 5];
readings.forEach(
    reading =>  console.log( "height( %s) = %s%", reading, bin.height(reading))
);

Обратите внимание, что при работе с датчиками реального мира данные калибровки могут различаться в зависимости от датчиков и установок - следует избегать жестких уравнений кодирования, которые необходимо калибровать по аппаратной изменчивости.

0 голосов
/ 20 октября 2019

var datas=[{
    ID :10,
    Bio :7,
    Non_Bio: 65,
    Recy :75,
    Extra :20
}]
var obt=[];
datas.map((data,index)=>{
    console.log(data)
Object.values(data).map(item=>{
        console.log(item)
    if(item===10){
        obt.push("100%");
      }
      else{
        obt.push("0%");
      }
     
})})
console.log("required output:");
console.log(obt);

Предполагается: ID = данные [0] .ID;так как вы выбираете из массива 0-й индекс и затем его ключ. Это должен быть массив объектов (вы не указали правильные входные данные.) и логика if может быть изменена соответствующим образом, как вы упомянули, если его 10, то это должно быть 100%.

Логика: просто итерируйте каждый объект массива, а затем получите значения объекта (каждого ключа, т. Е. Id, bio и т. Д.) И проверьте значение, если оно делится на 10, затем поместите эти данные в пустой массив, чтобы вы моглииспользуйте это дальше. Вы также можете вставить выходные данные в карту.

Надеюсь, это сработает. Пожалуйста, предложите, если это потребует каких-либо изменений. @ Джон

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...