删除数组中的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 });