如何过滤对象内深度堆叠的数据(然后 edit\delete 它)?
How to filter deeply stacked data inside an object(and edit\delete it afterwards)?
我这里有个问题,我找不到解决方法。我有一个有很多层次的对象。我的对象中有包含对象的数组,它们也有包含对象的数组。让我在这里向您展示一些示例:
{
sections: [
{
currency_sections: [
{
positions: [
{
id: 131,
quantity: 24
},
{
id: 133,
quantity: 1
}
],
key: value,
key: value
},
{
positions: [
{
id: 136,
quantity: 2
},
{
id: 137,
quantity: 3
}
],
key: value,
key: value
}
],
key: value,
key: value
}
],
key: value,
key: value
}
我通过 handlebars 模板构建我的数据。这并不重要。但是在我的页面上我可以改变,比方说,头寸的数量。当我这样做时,我只有我更改的位置的 ID 和新数量。
所以基本上我需要过滤我的对象以在通过 id 键匹配的位置数组中找到一个对象并在那里更改数量。
我也可以删除整个位置,在这种情况下我需要找到需要id的位置对象并删除整个对象。
我无法理解的是如何一次性过滤所有数据。如果我能找到它,我该如何操作未命名的对象。
假设我以某种方式过滤了它。我可以 return 该对象的完整路径供以后使用吗?例如 - sections[0].currency_sections[1].positions[0] ?因为如果我能做到,那么删除和编辑应该就足够简单了。
此时我真的没有时间重做一些更合适的东西,比如 angular 或 ember。虽然我有下划线和 jquery.
只是想更新我的问题。最后我刚刚创建了一个方法来构建我的元素的索引。
function _createItemsIndex(data) {
if (!$.isEmptyObject(data)) {
$.each(data.sections, function (sectionIndex, section) {
$.each(section.currency_sections, function (curSecIndex, curSec) {
$.each(curSec.positions, function (positionIndex, position) {
_items.push({
id: position.id,
quantity: position.quantity,
price: parseFloat(position.price) || 0,
index: [sectionIndex, curSecIndex, positionIndex]
});
});
});
});
}
}
感谢 levi 的评论
我这里有个问题,我找不到解决方法。我有一个有很多层次的对象。我的对象中有包含对象的数组,它们也有包含对象的数组。让我在这里向您展示一些示例:
{
sections: [
{
currency_sections: [
{
positions: [
{
id: 131,
quantity: 24
},
{
id: 133,
quantity: 1
}
],
key: value,
key: value
},
{
positions: [
{
id: 136,
quantity: 2
},
{
id: 137,
quantity: 3
}
],
key: value,
key: value
}
],
key: value,
key: value
}
],
key: value,
key: value
}
我通过 handlebars 模板构建我的数据。这并不重要。但是在我的页面上我可以改变,比方说,头寸的数量。当我这样做时,我只有我更改的位置的 ID 和新数量。
所以基本上我需要过滤我的对象以在通过 id 键匹配的位置数组中找到一个对象并在那里更改数量。
我也可以删除整个位置,在这种情况下我需要找到需要id的位置对象并删除整个对象。
我无法理解的是如何一次性过滤所有数据。如果我能找到它,我该如何操作未命名的对象。
假设我以某种方式过滤了它。我可以 return 该对象的完整路径供以后使用吗?例如 - sections[0].currency_sections[1].positions[0] ?因为如果我能做到,那么删除和编辑应该就足够简单了。
此时我真的没有时间重做一些更合适的东西,比如 angular 或 ember。虽然我有下划线和 jquery.
只是想更新我的问题。最后我刚刚创建了一个方法来构建我的元素的索引。
function _createItemsIndex(data) {
if (!$.isEmptyObject(data)) {
$.each(data.sections, function (sectionIndex, section) {
$.each(section.currency_sections, function (curSecIndex, curSec) {
$.each(curSec.positions, function (positionIndex, position) {
_items.push({
id: position.id,
quantity: position.quantity,
price: parseFloat(position.price) || 0,
index: [sectionIndex, curSecIndex, positionIndex]
});
});
});
});
}
}
感谢 levi 的评论