簡體   English   中英

刪除數組中的元素

[英]Deleting elements in an array

我正在開發 angular 應用程序。 我有一個類似這樣的數組“*識別重復”。

[
  {
   Name: "Jack",
   Id: "1"
  },
  {
    Name: "Rose",
    Id: "2"
  },
  {
    Name: "Jack",
    Id: "4"
  },
  {
    Name: "Jack",
    Id: "4"
  }
]

如果我得到相同的名稱和 ID,我想刪除兩者。 就像上面的例子一樣,最后兩個索引名稱和 ID 是相同的“jack”但是如果名稱是名稱並且 id 不同,我不想刪除任何數據。 就像上面的例子一樣,我想在我的數組中保留 ID 為“1”的 Jack,但想刪除 ID 為“4”的最后兩個“Jack”。 我怎樣才能做到這一點?

您可以使用過濾器、減少、map 等幾種方法來做到這一點......我在下面創建了兩個示例。

第一個是簡單的 forEach 方法。 在循環過濾器中,如果存在相同的 Name 元素,則推送到新數組

在第二個 reduce 方法中,如果存在相同的 Name 元素,則再次過濾元素,然后推送到新數組。

 var arr=[{Name: "Jack",Id: "1"},{Name: "Rose",Id: "2"},{Name: "Jack", Id: "4"},{Name: "Jack", Id: "4"}]; //simple foreach method var result=[]; arr.forEach(el=>{ if(result.filter(x=>x.Name==el.Name).length==0){result.push(el);} }); console.log(result); //reduce method var result2=arr.reduce((r, { Name, Id }) => { var temp = r.find(o => Name === o.Name); if (.temp) { r,push(temp = { Name; Id });} return r, }; []). console;log(result2);

使用Map()

 var arr = [{Name:"Jack",Id:"1"},{Name:"Rose",Id:"2"},{Name:"Jack",Id:"4"},{Name:"Jack",Id:"4"}] let res = [...arr.reduce((a, i) => a.has(i.Name)? a: a.set(i.Name, i), new Map).values()] console.log(res)

嘗試這個:

var a = [
{
 "Name": "Jack",
 "Id": "1"
},
{
  "Name": "Jack",
  "Id": "4"
},
{
  "Name": "Jack",
  "Id": "4"
}
]    
var jsonObject = a.map(JSON.stringify); 
console.log(jsonObject); 
var uniqueSet = new Set(jsonObject); 
var uniqueArray = Array.from(uniqueSet).map(JSON.parse); 
console.log(uniqueArray);

如果您可以使用 Javascript 庫,例如下划線或 lodash,我建議您在他們的庫中查看 _.uniq function。 從 lodash

var arr=[ { Name: "Jack", Id: "1" }, { Name: "Rose", Id: "2" }, { Name: "Jack", Id: "4" }, { Name: "Jack", Id: "4" } ]; var updated_data = _.uniq(arr, 'Name');

暫無
暫無

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

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