[英]how to find index of array element by the name of it inside a function?
我有一個 js function 讀取 JSON 文件並通過循環輸出它們:
response.data.forEach((item,index)=>{
items += " <div class='eleman'>"
+ "<img src='"+item.teamMember.profileImageUrl+"' width='100%'>"
+ "<div class='content list'>"
+ "<div class='fullname'>"+item.teamMember.fullName+"</div>"+
...
json 上有一個名為 customFields (item.teamMember.customFields) 的數組,它可能有 0 到 7 個索引,其中一個索引的示例應該是:
id : 1202
name : Tags
type : SingleLineText
value : Composer,Music,Pan's Labyrinth
我想獲取名為 ByLine 的索引的值。 並在全名div下使用。
我嘗試了幾個代碼,但它們都不起作用。 如果有人可以提供幫助,將不勝感激。
以下是從問題中假設的:
response.data
是一個數組teamMember
的道具teamMember
都有一個名為customFields
的道具,它是一個數組name
目標是僅從customFields
數組中過濾元素name
prop 與值ByLine
匹配的那些元素。
實現這一目標的一種可能方法:
const getIndexOfByLine = (arr = item.teamMember.customFields, matchNameWith = 'ByLine') => (
arr
.map((el, i) => ({elt: el, idx: i}))
.filter(obj => obj.name === matchNameWith)
.map(obj => obj.idx)
[0]
);
注意:如果超過 1 個元素的name
為“ByLine”,則僅返回第一個索引。
解釋
map
遍歷item.teamMember.customFields
數組,其中元素為el
,索引為i
。elt
和idx
.map((el, i) => ({elt: el, idx: i}))
name
與ByLine
匹配的那些元素(可以通過參數matchNameWith
更改) .filter(obj => obj.name === matchNameWith)
elt
和idx
的對象的數組。 由於我們只需要索引, map
數組只獲取索引。 .map(obj => obj.idx)
name
,只需使用第一次出現。 [0]
我用了這個,它奏效了
let byline=item.teamMember.customFields.filter(checkbyline);
function checkbyline(fields) {
if (fields.name == 'Byline') {
return fields.value}
else {return }
}
並在 HTML output 上使用它
byline[0].value
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.