使用实例删除javascript中基于id的对象
Deleting an object based on the id in javascript
这是将对象压入数组的后续操作,我通过识别parentacvityid将对象压入数组。现在我想根据对象的id删除它。我已经尝试了下面的代码基于后续问题,但它不工作。有人能告诉我我哪里做错了吗?
function getParent(r, a) {
return a.id === child.parentActivityId ? a : a.items.reduce(getParent, r);
}
var node = data.reduce(getParent, {});
'items' in node && node.items.splice(child,1);
此解决方案以递归方式使用Array.prototype.some()
,并具有一些基本的错误处理。
数据取自javascript中不能通过识别对象的父id将对象推入父数组
关键特性是用于查找所需节点和索引的回调。
var data = [{ id: 1, activityName: "Drilling", parentActivityId: 0, items: [{ id: 2, activityName: "Blasting", parentActivityId: 1, items: [{ id: 3, activityName: "Ann", parentActivityId: 2, items: [] }, { id: 4, activityName: "Ann", parentActivityId: 2, items: [] }] }, { id: 5, activityName: "Transport", parentActivityId: 1, items: [{ id: 6, activityName: "Daniel", parentActivityId: 5, items: [] }] }] }],
id = 3,
node;
function findNode(a, i, o) {
if (a.id === id) {
node = { array: o, index: i };
return true;
}
return Array.isArray(a.items) && a.items.some(findNode);
}
data.some(findNode);
if (node && Array.isArray(node.array)) {
node.array.splice(node.index, 1);
}
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
您需要在父项数组中查找子节点的索引。应该像循环遍历父元素的items数组一样简单,直到遇到子元素id。
一旦你有了子节点的索引,使用它作为拼接函数的第一个参数
见下面的一个粗略的例子(你需要添加错误检查代码等的情况下,没有找到父或子)
function getParent(r, a) {
return a.id === child.parentActivityId ? a : a.items.reduce(getParent, r);
}
var node = data.reduce(getParent, {});
var theChildIndex = 0;
for (i = 0; i < node.items.length; i++) {
if (node.items[i].id == child.id)
{
theChildIndex = i;
break;
}
}
node.items.splice(theChildIndex,1);
相关文章:
- 识别没有ID或特定属性的对象
- Html地图对象-点击地图获取id的一部分
- 更改嵌套对象的父子相关id
- 如何循环通过2个对象数组并通过匹配id进行合并
- 保存id数组's而不是对象
- 如何通过json对象选项卡中的Id来检查对象是否存在
- 通过知道对象的id在JSON中查找对象
- 如何排除对象'在$.toJSON之前或期间的s id属性
- 如何从对象中获取id
- 如何通过ID获取图层对象
- 将URL字符串${userid}替换为javascript对象中的实际用户id
- 将对象数组与id数组进行比较
- 如何查找流星集合中最后一个元素/对象的id
- 如何将id数组与带下划线的对象数组嵌套属性进行比较
- 筛选具有相同id的多个数组中的对象
- AngularJS-点击对象,访问它's ID&以该ID作为参数激发函数
- 我想使用Javascript中的循环在HTML中的特定id中显示数组中的多个对象
- 在不重构Mongo数据库的情况下,更新嵌入数组中的具有给定ID的对象
- 有没有一种简单的方法可以用包含id和名称(从a到Z)的对象填充数组
- 如何隐藏#id对象