2017-10-18 102 views
0

我想從我的數組中刪除對象的多個項目中刪除某些屬性的任何內置的功能,可以幫助我解決我的問題:濾波器陣列,並從剩餘的對象

數組是:

this.array= [ 
    { "Id": 1, "Title": "3 man crew –Distribution", "checked": true,'data': 123}, 
    { "Id": 2, "Title": "3 man crew – Transmission" ,'data': 123}, 
    { "Id": 3, "Title": "Flagger",'data': 124 }, 
    { "Id": 1, "Title": "Mowing Crew" ,'data': 183} 
    { "Id": 7, "Title": "Mowing Crew3" ,'data': 187} 
] 

我想從我的filtere數組中刪除標識數據如果輸入爲1,所以我的新數組是:

[ 
    { "Title": "3 man crew –Distribution", "checked": true}, 
    { "Title": "Mowing Crew" ,'data': 183} 
] 

app.html:

根據id刪除陣列:

**app.ts** 

deleteCheck(value) { 
    //logic to delete id and data 
    this.array = this.array.filter(item => item.Id=== value); 
    // returns array but with Id and but i want my new array without data and id 
} 
+2

爲什麼你會認爲這與Angular有什麼關係? – 2017-10-18 19:04:35

+0

您是否試圖從現有對象中刪除屬性或創建沒有屬性的新對象? – guest271314

+0

我建議你回頭查看JavaScript教程並再次介紹。你試圖做的事情是非常微不足道的。它只是過濾和映射,這就是JavaScript爲了生活所做的事情。如果每次想要進行一些數據操作時都必須發佈到SO,則不會變得非常快。 – 2017-10-18 19:15:02

回答

0

使用map功能:

var newArray = array 
    .filter(item => item.Id === value) 
    .map(item => ({ 
     Title: item.Title, 
     checked: item.checked 
    })); 
+0

喲右濾清器是必須 –

+0

@torazaburo過濾不是OP的質疑,因爲他知道如何使用'過濾器(。 ..)'功能。 – Andrei

+0

則返回undefined如果不匹配 –

1

除了filter(),你也應該使用map(),像這樣的:

deleteCheck(value) { 

//logic to delete id and data 
    this.array = this.array.filter(item => item.Id === value) 
      .map(item => { 
       delete item.Id; 
       delete item.Title; 
       return item; 
      }); 
} 
+0

我不使用'map'作爲一種變異通過的副作用,如'delete'對象的一個​​巨大的風扇。 – 2017-10-18 19:17:18

1

可能映射:

.map(({Id, data, ...rest}) => rest); 

請注意,這是一個相當新酷的東西(對象與其他運營商解構),但它works,在現代瀏覽器至少...