2016-04-14 74 views
1

問題聽起來很簡單,從數組中取出的值,但我不知道怎樣..JS - 在另一個陣列

實施例: 我 -

users[ userid1[u1XsessionId1, u1XsessionId2, u1XsessionId3] userid2[u2XsessionId1, u2XsessionId2, u2XsessionId3] ] 

兩個用戶具有3個活性會話。

「userid1」從他的第二次會議上斷開,所以我想刪除「u1XsessionId2」,並與

users[ userid1[u1XsessionId1, u1XsessionId3] userid2[u2XsessionId1, u2XsessionId2, u2XsessionId3] ] 

而且結束時,從他的會話「userid1」斷開連接時,我只收到他的會話ID而不是用戶ID,但我有一個所有用戶ID的數組,所以我可能必須遍歷所有用戶和所有會話才能找到「u1XsessionId2」。所有會話和用戶都有其唯一的ID。

+0

這看起來相當簡單。你試過什麼了? –

+0

@ tudor.gergely我試着循環遍歷所有的用戶,如果會話ID在該用戶標識中,則進行拼接。這不起作用的原因,我會發送代碼,但我現在在我的平板電腦上,我沒有在這裏 –

+0

如果你沒有得到用戶斷開連接時的用戶名,唯一的辦法就是搜索通過每個用戶的sessionid。這是一個像你所描述的嵌套循環。當你有機會的時候附上你的代碼。問題主要出在那裏。 –

回答

0
var users = [ 
    [u1XsessionId1, u1XsessionId2, u1XsessionId3], 
    [u2XsessionId1, u2XsessionId2, u2XsessionId3] 
]; 

users[0].splice(1, 1); // removes u1XsessionId2 from first user 

如果你有一個會話ID值,但不知道索引(例如,它可能是會話ID 1,2或3,但需要知道要刪除哪一個),那麼你可以得到它,刪除它像這樣: -

var index = users[0].indexOf(u1XsessionId2); 

if (index > -1) { // -1 means it wouldn't exist 
    users[0].splice(index, 1); // 1 second arg means remove 1 item 
} 

您可以read more about .splice() here

+0

感謝您的幫助,但問題是我不知道user1斷開連接還是user2斷開連接,因此我無法使用用戶[0] ..會話ID也可能位於用戶[1]中。如果會話ID在裏面,我必須首先搜索所有用戶。此外,我必須訪問所有的用戶會話,例如用戶[「123」](123是他的ID)我有另一個陣列,所有的用戶ID存儲,所以我可以使用該 –

+0

@McPlažéér聽起來像你應該組合陣列用戶ID與會話ID數組關聯,這樣users數組中的每個項目都是一個對象,其屬性是用戶ID,其值是一個會話ID數組 – Shakespeare