Как создать Map с двумя Map внутри?

100
05 марта 2022, 11:30

Вытаскиваю данные с биржи, сначала торговую пару, а потом к ней несколько данных по таймфреймам. То есть

pairs: {
    'EURUSD': {
        '30m': {rsi, sma, ohlc, ...}
        '1h':  {rsi, sma, ohlc, ...}
    }
}

Как это сделать?

if (!pairs.get(symbol)){
      pairs.set(symbol, ???)
    }

Как инициализировать содержимое двумя Map?

Answer 1
var symbol = 'EURUSD';
if (!pairs[symbol]) {
  pairs[symbol] = {
    '30m': {...},
    '1h':  {...}
  };
}
Answer 2

там песочница

namespace qwa {
    export type $pairs2map = (pairs: $pairs) => $map
    export type $map2pairs = (map: $map) => $pairs
    export interface $pairs {
        [k: string]: {
            [k: string]: $data
        }
    }
    export type $map = Map<string, $mapB>
    export type $mapB = Map<string, $data>
    export interface $data {
        rsi: any,
        sma: any,
        ohlc: any,
    }
}
namespace qwa {
    export const pairs2map: $pairs2map = pairs => {
        let map: qwa.$map = new Map()
        for (let keyI in pairs) {
            let valI = pairs[keyI]
            let mapB: qwa.$mapB = new Map()
            for (let keyJ in valI) {
                let data: qwa.$data = valI[keyJ]
                mapB.set(keyJ, data)
            }
            map.set(keyI, mapB)
        }
        return map
    }
}
namespace qwa {
    export const map2pairs:qwa.$map2pairs = map => {
        const pairs: qwa.$pairs = {}
        map.forEach((mapB, keyI) => {
            pairs[keyI] = {}
            mapB.forEach((data, keyJ) => {
                pairs[keyI][keyJ] = data
            })
        })
        return pairs
    }
}
TEST: {
    let pairs = {
        'EURUSD': {
            '30m': { rsi: null, sma: null, ohlc: null, },
            '1h': { rsi: null, sma: null, ohlc: null, },
        }
    }
    const map = qwa.pairs2map(pairs)
    const pairsFromMap = qwa.map2pairs(map)
    console.log(pairsFromMap)
}

var qwa; 
(function (qwa) { 
    qwa.pairs2map = pairs => { 
        let map = new Map(); 
        for (let keyI in pairs) { 
            let valI = pairs[keyI]; 
            let mapB = new Map(); 
            for (let keyJ in valI) { 
                let data = valI[keyJ]; 
                mapB.set(keyJ, data); 
            } 
            map.set(keyI, mapB); 
        } 
        return map; 
    }; 
})(qwa || (qwa = {})); 
(function (qwa) { 
    qwa.map2pairs = map => { 
        const pairs = {}; 
        map.forEach((mapB, keyI) => { 
            pairs[keyI] = {}; 
            mapB.forEach((data, keyJ) => { 
                pairs[keyI][keyJ] = data; 
            }); 
        }); 
        return pairs; 
    }; 
})(qwa || (qwa = {})); 
TEST: { 
    let pairs = { 
        'EURUSD': { 
            '30m': { rsi: null, sma: null, ohlc: null, }, 
            '1h': { rsi: null, sma: null, ohlc: null, }, 
        } 
    }; 
    const map = qwa.pairs2map(pairs); 
    const pairsFromMap = qwa.map2pairs(map); 
    console.log(pairsFromMap); 
}

Answer 3
new Map([
  [yourKeyA: new Map()], 
  [yourKeyB: new Map()], 
]) 

const pairs  = new Map(),  
      symbol = 'EURUSD';  
 
if (!pairs.has(symbol)) 
  pairs.set(symbol, new Map([ 
    ['30m', new Map()], ['1h', new Map()] 
  ]));  
 
pairs.get('EURUSD').get('1h').set('rsi', { foo: 'bar' });  
 
console.log(`pairs['EURUSD']['1h']['rsi'] is`,  
  pairs.get('EURUSD').get('1h').get('rsi') 
); 

READ ALSO
Остановить таймер с помощью checknet js

Остановить таймер с помощью checknet js

У меня проблема Я создаю онлайн-тестЯ проверяю, что интернет был отключен с помощью плагина jquery checknet

101
Вывод информации из json используя ajax

Вывод информации из json используя ajax

Используя api стороннего сервиса я отправляю информацию наших заказовНа этом сервисе у заказов 3 статуса: новые, активные и завершенные

98
Как поменять стиль элемента по определённому условию?

Как поменять стиль элемента по определённому условию?

Мне нужно по клику на кнопку перекрасить соседний див в синий цветКомпонент кнопка, и компонент див находятся на одном уровне

85
как присвоить данные в компоненте vue.js

как присвоить данные в компоненте vue.js

у меня есть 2 компонента, мне необходимо чтобы при срабатывание события в компоненте "А" данные присваивались в форму компонента "B",

78