【问题标题】:Delete JSON data in array删除数组中的 JSON 数据
【发布时间】:2017-12-31 20:13:21
【问题描述】:

我正在尝试从 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
    }];
   });
 });

我该怎么做?

【问题讨论】:

  • 您是要删除特定用户还是整个数组?
  • 您要删除整个用户数组还是只删除其中的一个特定对象?
  • 每个连接的用户在该页面上都有自己的昵称和ID。断开连接的用户将在用户数组中删除。

标签: javascript arrays json node.js socket.io


【解决方案1】:

您可以尝试使用 lodash 方法来实现您的目标:-

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

看看这是否有效..

【讨论】:

    【解决方案2】:

    如果你知道每个用户对象的每个属性的值,你可以将值传递给一个函数并循环遍历用户数组以找到匹配的对象,然后从数组中拼接它(更新答案传递在对象到函数中):

    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
    });

    【讨论】:

    • 每个连接的用户在该页面上都有自己的昵称和 ID。断开连接的用户将在 users 数组中删除。这不是像 1 或 2 这样的静态。
    • 不,我知道这不是静态的。我刚刚计算了“i”,以便有一个示例用户数组供您查看。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-25
    • 2020-05-06
    • 1970-01-01
    • 2021-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多