[英]JavaScript error: Cannot read property 'includes' of undefined
我想檢查數組msgArr
data.objectId
已存在msgArr
。 為此我運行下面的代碼:
var exists = msgArr.objectId.includes(data.objectId);
if(exists === false){
msgArr.push({"objectId":data.objectId,"latLont":data.latLont,"isOnline":data.isOnline});
}
該數組如下所示:
var msgArr = [
{isOnline:true,latLont:"123",objectId:"on0V04v0Y9"},
{isOnline:true,latLont:"1",objectId:"FpWBmpo0RY"},
{isOnline:true,latLont:"48343",objectId:"Qt6CRXQuqE"}
]
我收到以下錯誤:
無法讀取未定義的屬性“包含”
正如評論所說:javascript數組對象沒有屬性objectId
。
查看此數組中的對象,很明顯他們擁有它,因此要檢查某個元素是否存在,您可以使用Array.prototype.some方法執行此操作:
var exists = msgArr.some(o => o.objectId === data.objectId);
它告訴您,您正在嘗試訪問未定義對象上的屬性。 msgArr
對象根本沒有屬性objectID
,這意味着它是未定義的 。 由於這不存在,因此無法使用任何類型的includes
屬性。
您需要的是訪問數組中的對象,而不是數組本身。 像msgArr[0].objectID
這樣的東西會引用一個實例化的對象。 您甚至可以使用數組函數根據其帶有過濾器函數的objectID來檢查是否存在某些內容。
首先戴夫牛頓是對的。 數組沒有objectId!
也許你的“數組”不是真正的數組。 也許它是一個包含數組的對象...我不知道......但在這種情況下,你必須編寫類似這樣的代碼:
var exist = msArr["objectId"] !== undefined
如果“msArr”具有名為“objectId”的屬性/字段,則“存在”是布爾值,其中包含信息
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.