Псевдоним массива для функции Node js - PullRequest
0 голосов
/ 15 сентября 2018

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

    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

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018

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

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 голосов
/ 15 сентября 2018

Если вам нужно, чтобы переменная 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
   };

   //.....
...