[英]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.