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+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告