Nodejs 从数组中删除对象的实现方法,做了一个创建房间的例子,现在不知道如何做?

Nodejs 从数组中删除对象的实现方法,做了一个创建房间的例子,现在不知道如何做?

结构 { type: 1, lists: [ { name: ‘asdf’, admin: ‘asdf’, hasNum: 1, key: undefined }, { name: ‘sdfsdf’, admin: ‘sdfsdf’, hasNum: 1, key: undefined }, { name: ‘呵呵呵’, admin: ‘菲菲’, hasNum: 1, key: undefined }, { name: ‘分丰富’, admin: ‘首都发生地’, hasNum: 1, key: undefined } ] }

想根据 admin 的值 去删除对应的 lists 数组里的 对象

举例 我获取到 菲菲用户后 ,删除 admin 是菲菲的 对象


6 回复

好的,我们可以通过遍历数组并使用 filter 方法来删除指定 admin 值的对象。以下是一个具体的示例代码,帮助你完成这个任务:

示例代码

假设你的数据结构如下:

const data = {
    type: 1,
    lists: [
        { name: 'asdf', admin: 'asdf', hasNum: 1, key: undefined },
        { name: 'sdfsdf', admin: 'sdfsdf', hasNum: 1, key: undefined },
        { name: '呵呵呵', admin: '菲菲', hasNum: 1, key: undefined },
        { name: '分丰富', admin: '首都发生地', hasNum: 1, key: undefined }
    ]
};

如果你想根据 admin 的值删除特定的对象,可以使用 filter 方法。例如,你想删除 admin菲菲 的对象:

function removeAdmin(data, adminToRemove) {
    data.lists = data.lists.filter(item => item.admin !== adminToRemove);
    return data;
}

// 使用示例
const adminToRemove = '菲菲';
const updatedData = removeAdmin(data, adminToRemove);

console.log(updatedData);

解释

  1. 定义函数:我们定义了一个名为 removeAdmin 的函数,它接受两个参数:dataadminToRemove
  2. 使用 filter 方法filter 方法会遍历 data.lists 数组,并返回一个新的数组,其中不包含 admin 属性等于 adminToRemove 的对象。
  3. 更新数据:我们将过滤后的新数组重新赋值给 data.lists
  4. 返回更新后的数据:最后,我们返回更新后的 data 对象。

输出结果

运行上述代码后,updatedData 将是这样的结构:

{
    type: 1,
    lists: [
        { name: 'asdf', admin: 'asdf', hasNum: 1, key: undefined },
        { name: 'sdfsdf', admin: 'sdfsdf', hasNum: 1, key: undefined },
        { name: '分丰富', admin: '首都发生地', hasNum: 1, key: undefined }
    ]
}

可以看到,admin菲菲 的对象已经被成功删除了。希望这能解决你的问题!


求大神 指点

Array.prototype.remove = function(index){ delete this[index]; return this; }; Array.prototype.clean = function(){ var arr1 = this, arr2 = []; for(var a in arr1){ if(arr1[a]&&arr1.hasOwnProperty(a)){ arr2.push(arr1[a]); } } this.splice(0); for(var b in arr2){ if(arr2.hasOwnProperty(b)){ this.push(arr2[b]); } } return this; }; var array = [1,2,3,4]; array.remove(2).clean();

var room = {lists:[{admin:111},{admin:222}]}

function del(admin){
  var pass = false;
  room.lists = room.lists.filter(function(v){
    return pass || (pass = !(v.admin === admin));
  });
}

del(111)

console.log(room.lists); // [{admin:222}]

签名: 交流群244728015 《Node.js 服务器框架开发实战》 http://url.cn/Pn07N3

product env code :

var room = {
  lists:[{admin:111},{admin:222}],
  del:function(admin){
     for(var i=0,len=this.lists.length;i<len;i++){
        if(this.lists[i].admin === admin){
           this.lists.splice(i,1);
           break;
        }
     }
  }  
}

room.del(111); console.log(room.lists); // [{admin:222}]


签名: 交流群244728015 《Node.js 服务器框架开发实战》 http://url.cn/Pn07N3

你可以通过使用 Array.prototype.filter 方法来从数组中删除符合条件的对象。以下是如何根据 admin 的值来删除对应的对象的示例代码:

示例代码

const data = {
    type: 1,
    lists: [
        { name: 'asdf', admin: 'asdf', hasNum: 1, key: undefined },
        { name: 'sdfsdf', admin: 'sdfsdf', hasNum: 1, key: undefined },
        { name: '呵呵呵', admin: '菲菲', hasNum: 1, key: undefined },
        { name: '分丰富', admin: '首都发生地', hasNum: 1, key: undefined }
    ]
};

function removeAdmin(data, adminToRemove) {
    data.lists = data.lists.filter(item => item.admin !== adminToRemove);
}

// 使用示例
removeAdmin(data, '菲菲');
console.log(data);

解释

  1. 定义数据结构:我们有一个包含 typelists 属性的对象。lists 是一个数组,其中每个元素都是一个包含 name, admin, hasNum, 和 key 属性的对象。

  2. 定义 removeAdmin 函数

    • 这个函数接受两个参数:data(原始数据)和 adminToRemove(需要移除的管理员名字)。
    • 使用 filter 方法遍历 lists 数组,并保留那些 admin 不等于 adminToRemove 的对象。
    • 更新 data.lists 为过滤后的结果。
  3. 调用 removeAdmin 函数:传入 data 对象和要移除的 admin'菲菲'

  4. 输出结果:打印更新后的 data 对象,可以看到 admin'菲菲' 的对象已经被移除。

这样,你就可以根据 admin 的值来删除对应的对象了。

回到顶部