簡體   English   中英

如何檢查對象數組是否包含字符串數組中的鍵 js?

[英]how can i check if an array of objects contains a key which is in array of strings js?

我們有一個對象數組,例如

const arr = [{id: "someId", name: {...}}, ...];
const skippedKeys = ["id"...]

如何根據跳過的鍵過濾 object 的數組? 結果應該是:

const result = [{name: {...}}, ...];

我也不想在循環中創建一個循環。 結果也可以使用 lodash 庫來實現。 我們也應該刪除帶有值的鍵。

這很簡單,不需要任何嵌套循環。 有兩種選擇可以做到這一點

  1. 使用includes function
    const result = arr.filter((item) => !result.includes(item.id));
  1. 使用set
    const dataSet = new Set(skippedKeys);
    const result = arr.filter((item) => !dataSet.has(item.id));

我更喜歡第二個,因為它不包括雙重檢查。 希望答案是有幫助的。

const result = arr.map(obj =>
  Object.keys(obj).reduce(
    (res, key) => (
      skippedKeys.includes(key) ? res : {...res, [key]: obj[key]}
    ),
    {},
));

既然你說它可以使用 lodash 來實現......這里的代碼使用 lodash

 let result = _.map(arr, (el)=> _.omit(el, skippedKeys))

暫無
暫無

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

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