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 是菲菲的 对象
好的,我们可以通过遍历数组并使用 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);
解释
- 定义函数:我们定义了一个名为
removeAdmin
的函数,它接受两个参数:data
和adminToRemove
。 - 使用
filter
方法:filter
方法会遍历data.lists
数组,并返回一个新的数组,其中不包含admin
属性等于adminToRemove
的对象。 - 更新数据:我们将过滤后的新数组重新赋值给
data.lists
。 - 返回更新后的数据:最后,我们返回更新后的
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
你可以通过使用 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);
解释
-
定义数据结构:我们有一个包含
type
和lists
属性的对象。lists
是一个数组,其中每个元素都是一个包含name
,admin
,hasNum
, 和key
属性的对象。 -
定义
removeAdmin
函数:- 这个函数接受两个参数:
data
(原始数据)和adminToRemove
(需要移除的管理员名字)。 - 使用
filter
方法遍历lists
数组,并保留那些admin
不等于adminToRemove
的对象。 - 更新
data.lists
为过滤后的结果。
- 这个函数接受两个参数:
-
调用
removeAdmin
函数:传入data
对象和要移除的admin
值'菲菲'
。 -
输出结果:打印更新后的
data
对象,可以看到admin
为'菲菲'
的对象已经被移除。
这样,你就可以根据 admin
的值来删除对应的对象了。