我有一个程序,可以将值推送到一个数据结构中,如下所示:
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/