首先,这是我的 urlObject
的样子:
{
term_id_1: "2155"
term_id_2: "2894"
ticker_1: "SPY"
ticker_2: "SPY"
}
我最多可以有 3 个术语和代码,例如:
ticker_1
、ticker_2
、ticker_3
及其匹配的标签:
term_id_1
、term_id_2
、term_id_3
这是我当前的函数,用于检查股票代码和标签组合是否存在,然后调用另一个函数:
function rebuildContainer(urlObject) {
console.log('urlObject',urlObject);
if (urlObject.ticker_1 && urlObject.term_id_1) {
var tickerObj = {};
tickerObj.ticker = urlObject.ticker_1;
var tagObj = {};
tagObj.term_id = urlObject.term_id_1;
saveTickerTags(tickerObj, tagObj);
}
if (urlObject.ticker_2 && urlObject.term_id_2) {
var tickerObj = {};
tickerObj.ticker = urlObject.ticker_2;
var tagObj = {};
tagObj.term_id = urlObject.term_id_2;
saveTickerTags(tickerObj, tagObj);
}
if (urlObject.ticker_3 && urlObject.term_id_3) {
var tickerObj = {};
tickerObj.ticker = urlObject.ticker_3;
var tagObj = {};
tagObj.term_id = urlObject.term_id_3;
saveTickerTags(tickerObj, tagObj);
}
}
这感觉很容易简化,你会怎么做?
最佳答案
还没有真正测试过太多,但这应该可以工作,这样你就不必对 id 进行硬编码......
function rebuildContainer(urlObject) {
// get the keys that contain the 'ticker' text
Object.keys(urlObject).filter(function (k) {
return k.indexOf('ticker') > -1;
}).forEach(function (k) {
// get the number at the end and look it up on the urlObject
var termId = urlObject['term_id_' + k.match(/\d+$/)[0]];
// if it is defined, save the object
if(termId !== undefined) {
var tickerObj = {};
var tagObj = {};
tickerObj.ticker = urlObject[k];
tagObj.term_id = termId;
saveTickerTags(tickerObj, tagObj);
}
});
}
关于javascript - 如何简化/精简这段代码? (对象检查到函数调用中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33425312/