javascript - 如何简化/精简这段代码? (对象检查到函数调用中)

标签 javascript performance loops optimization javascript-objects

首先,这是我的 urlObject 的样子:

{
    term_id_1: "2155"
    term_id_2: "2894"
    ticker_1: "SPY"
    ticker_2: "SPY"
}

我最多可以有 3 个术语和代码,例如:

ticker_1ticker_2ticker_3

及其匹配的标签:

term_id_1term_id_2term_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/

相关文章:

javascript - 为什么这个函数在第一次迭代后不退出?

javascript - Angular Factory 没有被调用

javascript - Jasmine 节点不等待主体完成

performance - MySQL高效 "select id else insert"查询

bash - 具有for循环的单行bash函数

C编程: function that keeps track of word lengths & counts?

javascript - 函数不扣除第一个值

java - 使用较小的物理内存对 10 亿个整数进行排序

mysql - 简单的 SQL 更新查询在小表上速度很慢

java - Java无限循环