簡體   English   中英

如何獲取子數組中已刪除元素的索引

[英]How to get index of removed element in the sub array

我有一個數組all = [2,3,4,12, 55,33]ar1 = [12, 55, 33] all = [2,3,4,12, 55,33] ,這是all的子數組(從12開始)。

當我從ar1 (ex:12)的all部分中刪除一個值時,如何獲取ar1中該值的索引(對於12則為0),以便也可以從ar1刪除它。

編輯:我實際上在我的數組中的對象。 我在這里以數字為例

由於您指定數組包含對象,因此應為每個對象指定一個單獨的id ,以便可以使用該id進行過濾。 除了id之外,您的對象還可以保存其他任何數據。

然后,您可以使用Array.findIndex查找相應對象的索引。

例:

const arr = [{ id: "abc" }, { id: "def" }];
arr.findIndex (itm => itm.id === "def") // Returns 1

另外,如果您不能添加id ,則可以進行深層對象比較(雖然不是100%准確,但在大多數情況下還是可以的)。 您可以使用獨立的實現,也可以使用Lodash的_.isEqual

實際上,您可以使用Array#splice()從第一個數組中刪除元素,然后使用Array#findIndex()檢查其index ,然后從第二個array刪除它。

var [removed] = all.splice(3, 1);
var index = ar1.findIndex(el => el.val == removed.val);
if (index !== -1) {
  ar1.splice(index, 1);
}

演示:

 var all = [{ val: 2}, { val: 3}, {val: 4}, {val: 12}, {val: 55 }, {val: 33}], ar1 = [{val: 12}, {val: 55}, {val: 33}]; var [removed] = all.splice(3, 1); console.log(removed); var index = ar1.findIndex(el => el.val == removed.val); if (index !== -1) { ar1.splice(index, 1); } console.log(ar1); 

暫無
暫無

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

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