簡體   English   中英

如何從 React Native 中未定義鍵值的數組中刪除 object?

[英]How to remove object from an array which have a key value as undefined in React Native?

我有一個列表,在選擇值后返回一個數組。 現在,假設我 select 第一個和第三個值跳過第二個,那么返回的數組如下:

 [
  {
   "cname": "10TKN", 
   "code": "403", 
   "id": 1
  },
  {
   "cname": undefined, 
   "code": undefined, 
   "id": 2
  }, 
  {
   "cname": "20TKN", 
   "code": "403", 
   "id": 3
  }
 ]

我希望預期的結果為:

 [
   {
    "cname": "10TKN", 
    "code": "403", 
    "id": 1
   },
   {
    "cname": "20TKN", 
    "code": "403", 
    "id": 3
   }
 ]

您可以使用 JavaScript 的Array.filter()過濾掉undefined的值。

 const data = [ { "cname": "10TKN", "code": "403", "id": 1 }, { "cname": undefined, "code": undefined, "id": 2 }, { "cname": "20TKN", "code": "403", "id": 3 } ]; const res = data.filter(({cname, code, id }) => cname && code && id); console.log(res);

這將確保只返回具有真實值的對象。

或者,正如 HMR 在評論中提到的那樣,如果您只想檢查undefined ,最好這樣做:

const res = data.filter(({cname, code, id }) => cname !== undefined && code !== undefined && id !== undefined);

假設我們要評估的鍵是cname 我們需要使用Array.filter function - 過濾掉數組:

 let arr = [ { "cname": "10TKN", "code": "403", "id": 1 }, { "cname": undefined, "code": undefined, "id": 2 }, { "cname": "20TKN", "code": "403", "id": 3 } ]; arr = arr.filter(({cname}) => cname); console.log(arr)

您可以按照建議使用filter ,但您必須從列表中檢查選定的 ID,然后丟棄未選擇的 ID。 簡而言之,只有當列表 object id 與您選擇的匹配時,您才會返回 true

const dataList = [
  {
   "cname": "10TKN", 
   "code": "403", 
   "id": 1
  },
  {
   "cname": undefined, 
   "code": undefined, 
   "id": 2
  }, 
  {
   "cname": "20TKN", 
   "code": "403", 
   "id": 3
  }
 ];

 const selectedDataIds = [1, 3];
 const res = dataList.filter(({ id }) => selectedDataIds.includes(id));
 console.log(res);

您可以使用Destructuring assignment並用逗號跳過一些值,如下所示:

 const arr = [ { "cname": "10TKN", "code": "403", "id": 1 }, { "cname": undefined, "code": undefined, "id": 2 }, { "cname": "20TKN", "code": "403", "id": 3 } ] const [first, ,third] = arr; console.log(first, third);

解構賦值 - 忽略一些返回值

暫無
暫無

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

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