如何过滤对象内部深度堆叠的数据(并在之后编辑删除它)

How to filter deeply stacked data inside an object(and editdelete it afterwards)?

本文关键字:数据 之后 编辑 删除 过滤 何过滤 对象 内部 深度      更新时间:2023-09-26

我这里有一个问题,我找不到如何解决它。我有一个有很多级别的对象。在我的对象中存在带有对象的数组,它们也有带有对象的数组。让我在这里向您展示一些示例:

{
  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
}

我通过车把模板构建我的数据。这并不重要。但是在我的页面上,我可以更改职位的数量。当我这样做时,我只有我更改的位置和新数量的 id。

所以基本上我需要过滤我的对象,以在通过 id 键匹配的位置数组中找到一个对象并更改那里的数量。

我也可以删除整个位置,在这种情况下,我需要找到需要id的位置对象并删除整个对象。

我无法理解的是我如何一次过滤所有数据。如果我能找到它,我该如何操作未命名的对象。

假设我以某种方式过滤了它。是否可以返回该对象的完整路径以供以后使用?在示例中 - 部分[0].currency_sections[1].位置[0] ?因为如果我能做到这一点,那么删除和编辑应该足够简单。

在这一点上,我真的没有时间重做所有更合适的东西,比如角度或余烬。虽然我有下划线和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]
          });
        });
      });
    });
  }
}

谢谢李维的评论