[英]How can I find particular value from array in react native
我試圖根據他們的名字在不同的變量中找到每個鏈接值,比如如果名字如果 facebook 那么 facebooklink 應該過濾,同樣的 lite twitter 和所有。 但不想給出索引號。 有時 fabook 應該是 o 索引 有時 twitter 將是 0 索引。 請幫忙
socialMediaDetails:
socialMediaDetail: Array(2)
0:
link: "HARIRAM@twitter.com"
name: "twitter"
__typename: "SocialMediaDetail"
__proto__: Object
1:
link: "VarnaHERO@facebook.com"
name: "facebook"
__typename: "SocialMediaDetail"
__proto__: Object
2:
link: "linkedIn@linkedin.com"
name: "linkedIn"
__typename: "SocialMediaDetail"
const socialMediaData=socialMediaDetails.socialMediaDetail;
const Steplabels = socialMediaData.filter((item) => {
return item.name === "twitter"
});
謝謝
有幾種方法可以實現 - 最簡單的方法是使用for .. of
循環,如果你只是尋找匹配name
的第一個項目:
function findLinkByName(name) {
for (const item of state.socialMediaDetails.socialMediaDetail) {
if (item.name === name) {
return item.link;
}
}
}
對於其他情況,例如返回name
存在多個匹配項的子集,則可以實現基於filter()
和map()
的簡單解決方案,如下所示:
function findLinksByName(name) {
return state.socialMediaDetails.socialMediaDetail
.filter(item => item.name === name)
.map(item => item.link);
}
這是一個顯示兩者的動作片段:
var state = { socialMediaDetails: { socialMediaDetail: [{ link: "HARIRAM@twitter.com", name: "twitter" }, { link: "VarnaHERO@facebook.com", name: "facebook" }, { link: "linkedIn@linkedin.com", name: "linkedIn" }, { link: "another twitter link", name: "twitter" } ] } } /* Find link of first item matching by name (or undefined if no match found) */ function findLinkByName(name) { for (const item of state.socialMediaDetails.socialMediaDetail) { if (item.name === name) { return item.link; } } } /* Find links for all items with matching name (or empty array if no matches found) */ function findLinksByName(name) { return state.socialMediaDetails.socialMediaDetail .filter(item => item.name === name) .map(item => item.link); } console.log(findLinkByName('twitter')); console.log(findLinkByName('facebook')); console.log(findLinksByName('twitter')); console.log(findLinksByName('facebook'));
希望有所幫助!
您可以使用find
方法,如下所示:
requiredMediaByName = (name) => {
return state.socialMediaDetails.socialMediaDetail.find(data => data.name === name);
};
console.log(requiredMediaByName('facebook'));
請注意, find
返回數組中的第一個匹配元素,如果您在第一次匹配時獲取它,則不會檢查其他元素。 如果你想要返回所有元素,那么你應該使用for循環並獲取所有元素。
你可以使用:
如果您只想知道該值是否存在
var doExist = arr.some(function(ele) { return ele.id === '21'; });
如果您想獲得您正在搜索的值:
var data = arr.find(function(ele) { return ele.id === '21'; });
if (data) { console.log('found'); 控制台日志(數據); // 這是整個對象,即item
不是布爾值 }
我在這個例子中使用了以下數組:
var arr = [];
var item1 = {
id: 21,
label: 'Banana',
};
var item2 = {
id: 22,
label: 'Apple',
};
arr.push(item1, item2);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.