javascript - 如何声明数组的哈希/字典

标签 javascript arrays dictionary

我有一个程序,可以将值推送到一个数据结构中,如下所示:

if(symbolType == "C" || symbolType == "P") // The calls and puts               
    stocks.push({                    
        symbol: symbol,
                undsymbol: undSymbol,
                open: 0,
                type: symbolType,
                expiry: expiry,
                days: days,
                strike: strike

    });
}            
else  // The stock     
{           
    stocks.push({
        symbol: symbol,
        open: 0,
        type: symbolType
    });
}

所以这就是关键:不是字符串!

{
    symbol: symbol,
    open: 0,
    type: symbolType
}

其值很多如下所示:

{                    
        symbol: symbol,
                undsymbol: undSymbol,
                open: 0,
                type: symbolType,
                expiry: expiry,
                days: days,
                strike: strike

 }

问题在于股票、看涨期权和看跌期权被放入一个集合中。相反,我想将股票及其相应的看涨期权和看跌期权添加到字典/映射中,其中股票是键,看涨期权和看跌期权被插入由其股票索引的数组中。

最后,我希望能够迭代并获取键和值。

  • 如何声明这个对象
  • 对其进行索引以查看 key[stock] 是否已存在,如果没有用空数组添加它。
  • 如果我得到“C”或“P”,我想获取保存此键 [stock] 的看涨/看跌期权的相应数组,并将看涨期权/看跌期权插入数组中。

最初我以为声明是这样的:

var stockCallsPutDict = {[]}


stockCallsPutDict[stock] = [];
stockCallsPut[stock].push(call);

// Pretty print the dict of keys and its options =
stockCallsPutDict.forEach(function kvp) {
   ...
}

最佳答案

如果可以选择 ES6,您可以自己构建一个对象或使用 Map

这是我想出的一些快速代码:

const stocks = {};
const addCallAndPut = callAndPut => {
  const symbol = callAndPut.symbol;
  if (!stocks[symbol]) {
    stocks[symbol] = [];
  }
  stocks[symbol].push(callAndPut);
}

const showStuff = () => {
  for (const symbol in stocks) {
    // output stuff using stocks[symbol]
  }
}

或使用 map

const stocks = new Map();

// basic implementation 
const addCallAndPut = callAndPut => {
  const stockCallsAndPuts = stocks.get(callAndPut.symbol) || [];
  stockCallsAndPuts.push(callAndPut);
  stock.set(callAndPut.symbol, stockCallsAndPuts);
}

关于javascript - 如何声明数组的哈希/字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42683623/

相关文章:

javascript - 如何在 Store 中使用 Vue 插件?

javascript - 使用解构的动态命名值

javascript - 累积CSS规则

c - 检查相邻数组的简单方法

JavaScript - 是否有一种简单的方法来获取嵌套 JSON 中每次出现的特定键的值

python - python 3.5 中的 dict.popitem()

javascript - 如何在 Handlebars 模板中使用 metalsmith-permalinks

javascript - OO JavaScript : array not getting initialized

swift - 巨大的Dictionary对象时编译错误。打破表达

java - 在java中用单独的矩形渲染等轴测图