2013-12-18 98 views
0

DEMO FIDDLE刪除其嵌套在對象

關聯數組值我有我的工作方案的結構如下。

Object {room1: Array[2], room2: Array[3], room3: Array[1]} 

我使用的添加值:

function addValue(obj, key, value, socketId) { 
if (obj.hasOwnProperty(key)) 
    obj[key].push({socketid: socketId, user: value}); 
else 
    obj[key] = [{socketid: socketId, user: value}]; 
} 

現在我想刪除數組中的特定行的條目。所以知道所有三個字段obj, key and value,從數組中刪除這個特殊的東西。

所以對於例如,如果我有

addValue(online, "room1","userA1","sA1"); 
addValue(online, "room1","userA2","sA2"); 
addValue(online, "room2","userB1","sB1"); 
addValue(online, "room2","userB2","sB2"); 
addValue(online, "room2","userB3","sB3"); 
addValue(online, "room3","user3","s3"); 

是這樣的:。

{ 
    room1: {socketid : sA1, user: userA1}, 
      {socketid : sA1, user: userA1}, 
    room2: {socketid : sB1, user: userB1}, 
      {socketid : sB2, user: userB2}, 
      {socketid : sB3, user: userB3}, 
    room3: {socketid : s3, user: user3} 
} 

現在我想刪除它具有行鍵= sB2和值= userB2

所以HOW TO終於有類似:

{ 
    room1: {socketid : sA1, user: userA1}, 
      {socketid : sA1, user: userA1}, 
    room2: {socketid : sB1, user: userB1}, 
      {socketid : sB3, user: userB3}, 
    room3: {socketid : s3, user: user3} 
} 

DEMO FIDDLE

回答

1

例如

function deleteValue(obj, key, value, socketId) { 
    if (!obj.hasOwnProperty(key)) 
     return; 
    obj[key] = obj[key].filter(function(x) { 
     return x.user != value || x.socketid != socketId 
    }) 
} 

http://jsfiddle.net/k3McA/1/

+0

完美答案!非常感謝! :) – softvar