[英]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 庫來實現。 我們也應該刪除帶有值的鍵。
這很簡單,不需要任何嵌套循環。 有兩種選擇可以做到這一點
includes
function const result = arr.filter((item) => !result.includes(item.id));
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.