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

Get corresponding value from array for value passed

我有这个数组

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'

有人可以告诉我如何实现吗?

使用过滤器:

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;
}

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

像这样:

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

这可能需要整理一下,但这似乎是您想要的。

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

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

LIVE DEMO

简单:

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