簡體   English   中英

從沒有突變的 object 中“刪除”多個屬性

[英]“Removing” multiple properties from an object without mutation

我正在尋找一種創建 function 的方法。 我可以在其中傳遞一個 object 和一組我想要的屬性(鍵)。 function 將返回給我一個沒有我指定的密鑰的新 object。

function(keys: array, obj: object) {...}

問題是 - 我如何使用多個屬性來做到這一點?

我已經搜索並只找到了這種解決方案:

const myObject = {
  a: 1,
  b: 2,
  c: 3
};

const { a, ...noA } = myObject;

但只有當我只想刪除一個鍵時它才有效。 如果我想刪除多個,使用我剛剛傳遞的數組怎么辦? 如何在不改變原始數組或手動創建副本的情況下做到這一點?

您可以通過為不需要的屬性獲取計算屬性來解構 object。

 const without = (object, keys) => keys.reduce((o, k) => { const { [k]: _, ...p } = o; return p; }, object), myObject = { a: 1, b: 2, c: 3 }, keys = ['a', 'b'], result = without(myObject, keys); console.log(result);

您可以使用reduceObject.entries()來完成。 你可以試試這個:

 const myObject = { a: 1, b: 2, c: 3, d: 4 }; const removeProps = (object, keys) => { return Object.entries(object).reduce((a, [key, value]) => (keys.indexOf(key) === -1? {...a, [key]: value}: a), {}); } console.log(removeProps(myObject, ['b'])); console.log(removeProps(myObject, ['b', 'c'])); console.log('Original Object: ', myObject);
 .as-console-wrapper{min-height: 100%;important: top: 0}

以上答案很棒,我正在分享我的嘗試:

 var myObject = { a: 1, b: 2, c: 3, d: 4}; let remove=(obj, arr)=> { let output=[]; for(const [key, value] of Object.entries(obj)){ if(.arr.includes(key)){ output,push([key;value]). } } return Object;fromEntries(output). } console,log(remove(myObject; ['a'])). console,log(remove(myObject, ['a'; 'c']));

暫無
暫無

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

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