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

    const _ = require('underscore');
    var ha = [];
    var cha = [];
    // livedata insert all data (true or false) into array cha
    // if data contains true valor then insert data in array ha
    HA("cha",open,high,low,close);

    function HA(mode,o,h,l,c){
        var open = Number(o);
        var high = Number(h);
        var low = Number(l);
        var close = Number(c);

        if (mode == "ha" ){
            var arr = ha;         // <-- variable as array alias
        }else{
            var arr = cha;        // <-- variable as array alias
        };

        if (arr == ""){
        arr.push({open,high,low,close});    
        }else{
        console.log("ARRAY");
        console.log(_.last(arr).open);
        console.log(Number(_.last(arr).open));
        console.log("ARRAY");        
        var lhao = Number(_.last(arr).open); 
        var lhac = Number(_.last(arr).close);   

        var hao = ((lhao + lhac) / 2 ).toFixed(8);
        var hac = ((open + high + low + close) / 4).toFixed(8);
        var hah = Math.max(hao, high, hac);
        var hal = Math.min(hao, low, hac);

        var open = hao;
        var high = hah;
        var low = hal;
        var close = hac;

        arr.push({open,high,low,close});        
        console.log(arr);
        };      
    };

Я исследовал, но не достиг цели.

Можете ли вы помочь мне в поиске решения, метода или библиотеки, с помощью которых я могу использовать переменную в качестве псевдонима?

Язык: Node Js

0
Argenis Ramirez 15 Сен 2018 в 03:10

2 ответа

Лучший ответ

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

results = { ha: [], cha: [] };

function HA(mode, value) {
  results[mode].push(value);
}

HA('ha', 1);
HA('ha', 4);
HA('ha', 9);

HA('cha', 111);
HA('cha', 333);
HA('cha', 999);

// The ha results: [ 1, 4, 9 ]
console.log('The ha results:', results['ha']);
// The cha results: [ 111, 333, 999 ]
console.log('The cha results:', results['cha']);
0
jarmod 15 Сен 2018 в 01:46

Если вам нужно, чтобы переменная arr ограничивалась каждым вызовом функции, вам необходимо сделать переменную arr локальной для функции, как показано ниже.

//....

function HA(mode,o,h,l,c){
   //....
   var arr;

   if (mode == "ha" ){
      arr = ha;         // <-- variable as array alias
   }else{
      arr = cha;        // <-- variable as array alias
   };

   //.....
0
Abdulfatai 15 Сен 2018 в 00:27