从数组中获取相应的值以传递值

时间:2017-07-03 18:14:44

标签: javascript angularjs arrays loops underscore.js

我有这个数组

var getDay: [
    { DayValue: '10D', DayDisplay: '10' },
    { DayValue: '20D', DayDisplay: '20' },
    { DayValue: '30D', DayDisplay: '30' }
      ]

现在有另外一个代码如下。

var b_day = getDayDetails('10D')

这将获得10D并检查getDay数组中相应的DayDisplay值。

我希望b_day的最终值为' 10'

同样,如果var b_day = getDayDetails('20D'),我希望b_day的最终值为' 20'

有人可以告诉我如何实现这个目标吗?

4 个答案:

答案 0 :(得分:2)

使用过滤器:

function getDayDetails (input) {
    if(getDay.length) {
        var v = getDay.filter(function(element) {
            return element.DayValue === input;
        });
        if(v.length) return v[0].DayDisplay;
        else return null;
    } else return null;
}

答案 1 :(得分:1)

您应该使用_.find来实现此目标

function getDayDetails(data){
    return _.find(getDay,{'DayValue':data});
}
function getDayDisplayDetails(data){
    return _.find(getDay,{'DayDisplay':data});
}

LIVE DEMO

答案 2 :(得分:1)

简单:

function findDay(dayParam) {
    const day = getDay.find(day => day.DayValue == dayParam);
    return day && day.DayDisplay;
}

答案 3 :(得分:0)

如果我理解你的问题,有几种方法可以做到。可能最简单的(当然不是最好的)方式只是一个FOR循环遍历数组并在每个索引处检查对象的属性,直到你找到正确的。

这样的事情:

function getDayDetails (v) {
    for (var i in getDay) {
        if (getDay[i].DayValue === v) return getDay[i].DayDisplay;
    }
}

这可能会有点整理,但这似乎是你想要的那种。