2017-07-03 54 views
-1

我有这样的阵列获取从数组对应的值值传递

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”

有人可以请让我知道如何实现这一目标的最终价值?

+0

这是字面上的一行代码。你有什么尝试? – Laoujin

+2

[通过值或属性从对象数组中获取JavaScript对象]的可能重复(https://stackoverflow.com/questions/13964155/get-javascript-object-from-array-of-objects-by-value-or-属性) –

回答

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

如果我正确理解你的问题,有两种方法可以这样做。也许最简单的(当然不是最好的)方式只是一个FOR循环遍历数组,然后检查每个索引处的对象属性,直到找到合适的属性为止。

事情是这样的:

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

这也许可以收拾了一下,但是这似乎是诸如此类的事情,你是后。

1

您应该使用_.find实现这一

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

LIVE DEMO

1

简单:

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