JavaScript:如何從物件中移除給定鍵對應的鍵值對?


JavaScript 中,可以建立物件來儲存資料作為鍵值對。可以使用點表示法 (obj.key) 或括號表示法 (obj["key"]) 來訪問物件中的資料。請參見以下示例:

let obj = { key1: "value1", key2: "value2", key3: "value" };

我們可以移除物件中給定鍵對應的鍵值對,但本教程將介紹三種方法。

使用 delete 運算子

delete 運算子用於刪除物件的屬性。delete 運算子不會刪除變數本身,只會刪除變數的值。

示例

請參見以下示例:

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      let obj = { key1: "value1", key2: "value2", key3: "value3" };
      delete obj.key2;
      document.getElementById("result").innerHTML = JSON.stringify(obj);
      console.log(obj)
   </script>
</body>
</html>

從上面的示例可以看出,delete 運算子只會刪除鍵的值,而不會刪除鍵本身。

以下是上述程式碼的逐行解釋:

let obj = { key1: "value1", key2: "value2", key3: "value3" };

我們建立了一個包含 3 個鍵值對的物件。

delete obj.key2;

delete 運算子用於刪除鍵為“key2”的鍵值對。

console.log(obj);

上述程式碼在控制檯中的輸出將是:{ key1: "value1", key3: "value3" }。可以看到,鍵為“key2”的鍵值對已從物件中刪除。

使用 filter() 方法

filter() 方法用於從現有陣列中建立一個新陣列。請參見以下示例

示例

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      let obj = { key1: "value1", key2: "value2", key3: "value3" };
      let newObj = Object.keys(obj)
      .filter(key => key != "key2")
      .reduce((acc, key) => {
         acc[key] = obj[key];
         return acc;
      }, {});
      document.getElementById("result").innerHTML =
      JSON.stringify(newObj);
      console.log(newObj)
   </script>
</body>
</html>

從上面的示例可以看出,filter() 方法只會刪除鍵的值,而不會刪除鍵本身。

以下是上述程式碼的逐行解釋

let obj = { key1: "value1", key2: "value2", key3: "value3" };

我們建立了一個包含 3 個鍵值對的物件。

let newObj = Object.keys(obj)
.filter(key => key != "key2")
.reduce((acc, key) => {
   acc[key] = obj[key];
   return acc;
}, {});

Object.keys() 方法用於建立物件鍵的陣列。filter() 方法用於從現有陣列中建立一個新陣列。將鍵與“key2”進行比較。如果不相等,則將鍵值對新增到新陣列中。reduce() 方法用於將陣列簡化為物件。

console.log(newObj);

上述程式碼的輸出將是:{ key1: "value1", key3: "value3" }。可以看到,鍵為“key2”的鍵值對已從物件中刪除。

使用 for…in 迴圈

for…in 迴圈用於遍歷物件的屬性。

示例

請參見以下示例:

<!doctype html>
<html>
<head>
   <title>Examples</title>
</head>
<body>
   <div id="result"></div>
   <script>
      let obj = { key1: "value1", key2: "value2", key3: "value3" };
      for (let key in obj) {
         if (key == "key2") {
            delete obj[key];
         }
      }
      document.getElementById("result").innerHTML =
      JSON.stringify(obj);
      console.log(obj)
   </script>
</body>
</html>

從上面的示例可以看出,for…in 迴圈只會刪除鍵的值,而不會刪除鍵本身。

以下是上述程式碼的逐行解釋

let obj = {key1: "value1", key2: "value2", key3: "value3"};

我們建立了一個包含 3 個鍵值對的物件。

for (let key in obj) {
   if (key == "key2") {
      delete obj[key];
   }
}

for…in 迴圈用於遍歷物件的屬性。key 變數用於儲存物件的鍵。如果鍵為“key2”,則從物件中刪除該鍵值對。

console.log(obj);

上述程式碼的輸出將是:{ key1: "value1", key3: "value3" }。可以看到,鍵為“key2”的鍵值對已從物件中刪除。

結論

在本教程中,我們介紹了三種從物件中移除給定鍵對應的鍵值對的方法。分別是 delete 運算子、for…in 迴圈和 filter() 方法。

更新於: 2022年6月24日

11K+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告