2017-07-03 46 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; 
}