簡體   English   中英

通過其他子數組的值獲取子數組

[英]Get subarray by value of other subarray

我有下一個對象:

u = {date:[1,2,2,1,5,6,2,8], uid:[11,22,33,44,55,66,77,88]}

我想通過'date'子數組從'uid'子數組中獲取值的數組。 像這樣:給我提供日期為“ 1”的uid。 結果:[11,44]。

怎么樣?

您可以使用reduce循環遍歷日期數組。 檢查值是與日期相同, concatu.uid[i]到蓄能器。

 var u = { date: [1, 2, 2, 1, 5, 6, 2, 8], uid: [11, 22, 33, 44, 55, 66, 77, 88] } var date = 1; var result = u.date.reduce((c, v, i) => v === date ? c.concat(u.uid[i]) : c, []); console.log(result); 

您可以使用map (如果每個date元素與目標日期匹配,則將每個date元素轉換為其對應的uid元素)和filter (僅將“有趣的”結果保留在最終數組中)的組合:

 var u = { date: [1, 2, 2, 1, 5, 6, 2, 8], uid: [11, 22, 33, 44, 55, 66, 77, 88] }; function getUid(date) { return u.date.map((d, i) => d === date ? u.uid[i] : false) .filter(v => v); } console.log(getUid(1)); console.log(getUid(5)); 

如果日期是所需日期,則可以通過在相同的索引處獲取相應的uid值來減少日期數組。

 function getUID(date) { return u.date.reduce( (r, d, i) => d === date ? r.concat(u.uid[i]) : r, [] ); } var u = { date: [1, 2, 2, 1, 5, 6, 2, 8], uid: [11, 22, 33, 44, 55, 66, 77, 88] }; console.log(getUID(1)); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM