我想添加一個對象到數組,如果它不在數組中。看起來很簡單,但不工作。我的數組仍然空着。我在哪裏犯錯誤?添加對象到數組不工作
var members = [];
var member = { id: 123, name: "Jane Doe" };
members.find((item) => {
if(members.length === 0 || item.id !== member.id)
members.push(member);
})
我想添加一個對象到數組,如果它不在數組中。看起來很簡單,但不工作。我的數組仍然空着。我在哪裏犯錯誤?添加對象到數組不工作
var members = [];
var member = { id: 123, name: "Jane Doe" };
members.find((item) => {
if(members.length === 0 || item.id !== member.id)
members.push(member);
})
我不認爲這是使用find
爲代碼中的正確方法; find
期望的布爾值返回和
返回滿足所述提供的測試功能的陣列中的第一元素的值。否則返回undefined。
你可以只拉出來的條件,那麼你就可以測試和值壓入members
:
var members = [];
var member = { id: 123, name: "Jane Doe" };
if(!members.some(item => item.id === member.id)) {
members.push(member);
}
console.log(members);
要調用members.find(...)上成員是空的[]; 所以找到會立即退出,因爲它沒有任何元素。
嘗試初始化成員是這樣的:
變種成員= [{ID:111,名稱: 「喬BLO」}];
然後你會看到在會員
兩個要素,我不知道,如果使用.find()
是最好的辦法在這裏。如果您傳遞給它的回調函數返回true,.find()
會從數組中返回一個項目。
嘗試使用其他東西一樣.includes()
-
var members = [];
var member = { id: 123, name: "Jane Doe" };
console.log(members);
if(!members.includes(item => member.id === item.id) || !members.length) {
members.push(member);
}
console.log(members);
是的,它與一個更正工作。條件應該是'item.id!== member.id',因爲我們要確保成員不在數組中。感謝您的幫助。 – Sam
如果使用'item.id!== member.id',我會將否定運算符放到前面,它在邏輯上是相同的,那麼您可能需要使用'every'而不是'some'來保持邏輯等效。 – Psidom
我現在明白了。乍一看我錯過了。再次感謝。 – Sam