[英]JS find() not working on array of objects
我有一個數組clients
,我想在其上運行array.find()
。 該數組包含對象,通常看起來像這樣:
[ { customId: 'user1', clientId: 'TPGMNrnGtpRYtxxIAAAC' },
{ customId: 'user2', clientId: 'G80kFbp9ggAcLiDjAAAE' } ]
這是我遇到問題的地方。 我正在嘗試使用find()
來查看數組中的任何 object (或對象的一部分)是否與某個變量recipient
匹配,該變量通常包含類似user1
的值。 我用來執行此操作的代碼是:
function checkID(recipient) {
return recipient;
}
var found = clients.find(checkID);
這總是返回數組中的第一個 object。 我使用find()
錯誤,還是有更好的方法來做到這一點?
find
接受一個謂詞(一個 function 如果 item 匹配則返回 true,如果 item 不匹配則返回 false)。
const arr = [ { customId: 'user1', clientId: 'TPGMNrnGtpRYtxxIAAAC' },
{ customId: 'user2', clientId: 'G80kFbp9ggAcLiDjAAAE' } ]
const result = arr.find(item => item.customId === 'user1')
// ^^^^^^^^^^^^^^^^^^^^^^^^^
// This should evaluate to true for a match and to false for non-match
您一直獲得數組的第一項的原因是因為您的checkId
function 返回的結果為true
。 因此,第一個項目被評估並產生一個真實的結果,因此它被選為第一個匹配項。
如果不熟悉 lambda 語法() => {}
,則該行類似於:
const result = arr.find(function (item) { return item.customId === 'user1' })
您正在使用查找錯誤。 如果收件人包含有關目標值的信息,您應該使用不同的名稱命名 checkID 的第一個參數。 並將它的任何屬性與接收者進行比較。
var found = clients.find(function(element) { return element.prop1 === recipient.anyProp; });
要檢查數組中的對象是否存在某個customId
,請將您要搜索的值放在 object 中,然后將該 object 傳遞給find()
:
let clients = [{ customId: "user1", clientId: "TPGMNrnGtpRYtxxIAAAC" }, { customId: "user2", clientId: "G80kFbp9ggAcLiDjAAAE" } ]; function checkID(el){ return el.customId === this.param; } let found = clients.find(checkID, {param: "user1"}); console.info(found);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.