簡體   English   中英

使用lodash從數組中刪除對象

[英]Remove an object from an array using lodash

我想通過ID從數組中刪除一個對象,用戶想要這樣做多少次。

num =用戶要刪除的次數。

我正在使用'_.find'查找產品ID是否與對象匹配。

我已經嘗試使用'_.remove',但這會刪除所有具有相同ID的東西,而我只想刪除用戶輸入的次數

我的密碼

_.times(num, () => {
    _.remove(this.businessItem.associatedProducts, function() {
           return _.find(this.businessItem.associatedProducts, {id: product.id});
         });
      });

對象businessItem.associatedProducts

[{
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  },
  {
    archived: false,
    archivedAt: null,
    categoriesFilter: {},
    category: {},
    categoryId: "7MdXH5wcrzN7SSQkDEUT"
  }
]

您可以使用lodash _.filter() (或香草JS Arrayfilter()_.reject() ,然后遞減一個counter 。只要counter中的值大於0,並且ID匹配,則從數組。

注意: _.remove()對原始數組進行變異,並返回一個已刪除項目的數組,因此在這種情況下,我更喜歡使用filter / reject方法,該方法返回一個不刪除已刪除項目的新數組。

 const fn = (num, id, arr) => { let counter = num return _.reject(arr, o => counter-- > 0 && o.categoryId === id) } const arr = [{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"},{"archived":false,"archivedAt":null,"categoriesFilter":{},"category":{},"categoryId":"7MdXH5wcrzN7SSQkDEUT"}] const result = fn(9, '7MdXH5wcrzN7SSQkDEUT', arr) console.log(result) 
 <script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.15/lodash.js"></script> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM