簡體   English   中英

通過鍵從對象中刪除

[英]Delete from object by key

我試圖通過鍵從對象中刪除一個屬性。

請務必注意,變量中包含鍵,並且我無法執行以下操作:

delete obj.test.a

這是我的代碼(不起作用)

var obj = {
 b: 2,
   test: {
      a: 1
   }
}

var abc = 'test.a';

delete obj[abc];

console.log(obj);

如何在不進行硬編碼的情況下刪除obj.test.a,而是從變量中獲取密鑰。

您可以先將字符串拆分為數組,然后使用reduce()匹配要刪除的對象並將其刪除。

 var obj = {"b":2,"test":{"a":1}} var abc = 'test.a'.split('.') abc.reduce(function(r, e, i) { if(i == abc.length - 1) delete r[e] return r[e] }, obj) console.log(obj); 

這也許是更優雅的方法

 var obj = {"b":2,"test":{"a":1}} 'test.a'.split('.').reduce(function(r, e, i, arr) { return arr[i + 1] ? r[e] : (delete r[e]) }, obj) console.log(obj); 

解釋我的評論的示例:

var obj = {
   test: {
      a: 'hello'
   }
};

function deleteProp(obj, path) {
   var props = path.split('.');
   var currentObj = obj;
   for(var i = 0; i < props.length; i++) {
      var prop = props[i];
      if(i == props.length - 1) {
         delete currentObj[prop];
      } else {
         currentObj = currentObj[prop];
      }
   }
}

deleteProp(obj, 'test.a');
console.log(obj); // { test: {} }

delete obj.test.a適用於我: 在此處輸入圖片說明

暫無
暫無

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

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