删除数组中的JSON数据

我想从JSON数组中删除一段数据。 例如,我有这个数组;

var users = []; io.on('connection',function(socket){ socket.on('nickname', function(nick){ socket.nick = nick; users.push({ user:socket.nick, userid:socket.id, socket:socket }); }); 

我试图用这种方式删除用户;

 socket.on('disconnect', function(){ delete users[{ user, userid, socket }]; }); }); 

我怎样才能做到这一点?

你可以尝试使用lodash方法来实现你想要的:

 var _ = require('lodash'); socket.on('disconnect', function(){ _.pullAllWith(users, [{ user:socket.nick, userid:socket.id, socket:socket }], _.isEqual) }); }); 

看看这是否工作..

如果您知道每个用户对象的每个属性的值,则可以将值传递给函数,并循环遍历用户数组以find匹配的对象,然后将其与数组拼接(更新后的答案以将对象传递给function):

 var users = []; for (var i = 1; i < 10; i++) { users.push({ user: i, userId: i, socket: i }); } /** * Loop through the users array to find matching * object to remove **/ var deleteUser = function(userToDelete) { for (var userObj in users) { var userObject = users[userObj]; if (typeof userObject === "object" && userObject.user === userToDelete.user && userObject.userId === userToDelete.userId && userObject.socket === userToDelete.socket) { users.splice(userObj, 1); break; } } console.log(users); }; deleteUser({ user: 2, userId: 2, socket: 2 });