在本教程中,我们将学习在javascript对象中删除属性或键的不同方法。
如何从Javascript对象中删除一个属性?
JavaScript对象是一个用小括号{}括起来的属性的键和值的集合。
让我们在javascript中声明一个对象,并对键和值进行内联初始化。
let obj = {
"model": "alto",
"company": "Maruthi",
"type": "car"
}
在这篇博文中:
我们将在learn different ways to deletethe key from an object with examples 。
- 使用删除操作符的语法
- 为键赋值未定义
- 使用Lodash的省略方法
- 使用ramdaJS dissoc函数
- ES6传播和销毁赋值语法的方法
- underscorejs挑选和省略方法
以上方法都是对一个原始数组进行变异。
使用delete操作符来删除一个属性
delete 操作符用于从一个对象中删除键,其键和值从一个对象中删除。
语法:
delete object[key];
or
delete object.key
要点
- 删除对象的自身属性
- 如果键被删除,返回true;如果键不存在,返回false。
console.log(obj);
delete obj.company
for (const property in obj) {
console.log(`${property}: ${obj[property]}`);
}
console.log(obj.company);
输出是
{ model: 'alto', company: 'Maruthi', type: 'car' }
model: alto
type: car
undefined
一步一步来
- 声明并初始化一个对象
- 通过使用 "删除 "操作将对象打印到控制台。
console.log - 使用
delete操作符从一个对象中移除company键和它的值。 - 使用
for in loop语法迭代对象的键和值属性 - 在循环迭代过程中,该属性被完全删除,并且在打印过程中不显示
Undefined通过检索对象的删除键来打印。
和其他使用delete 的替代方法如下
delete obj['company']
delete operator 是可用的和简单的,但当你用循环迭代从大型对象中批量删除键时,delete不是最好的 ,性能非常慢。
将未定义的值分配给键
将undefined 的值赋给key ,然后key 和value 从对象中删除。
从性能上看,assignundefined 比delete operator 快10倍。
重要的一点是:
- 在这种方法中,它不会完全从对象中移除。
- 正如你在例子中看到的,在for循环的迭代过程中,公司属性仍然是可见的,并且是未定义的值。
console.log(obj);
obj.company = undefined
console.log(obj);
输出是
{ model: 'alto', company: 'Maruthi', type: 'car' }
{ model: 'alto', company: undefined, type: 'car' }
使用Lodash的省略方法
lodash中的省略方法可以移除对象自身的属性,Omit method ,接受对象和要移除的键或键的列表。下面是一个例子
newobj = _.omit(obj, 'type');
console.log(newobj)
输出是
Object {company: "Maruthi", model: "alto"}
使用ramdaJS dissoc函数
ramdaJS实用程序库是具有dissoc功能的实用程序库。它接受第一个参数是要删除的键,第二个参数是一个源对象,并在删除键后返回新的对象。
R.dissoc('model', {"model": "alto","company": "Maruthi","type": "car"});
输出是
{company: "Maruthi", type: "car"}
ES6扩展和销毁赋值的语法方法
展开运算符和销毁赋值是ES6语言的新特性。使用ES6语法是非常容易的
const { company, ...newobj } = obj;
console.log(newobj);
而输出是
{ model: 'alto', type: 'car' }
omit, pick method in underscorejs
这不是删除对象的键,而是通过过滤指定的键来复制原始对象的属性。这两个方法--pick 和omit 做的是同样的操作。
以下是语法
pick(object,keys)
omit(object,keys)
这个方法的输入是Objects是一个原始的源对象,keys是你想从目标对象中删除的keys列表。
var empObject = {"id": "1", "name": "Franc", "salary": "5000"};
let empIdNameObject=_.pick(empObject, "id", "name");
console.log(empIdNameObject)
let empIdObject=_.omit(empObject, "id");
console.log(empIdObject)
而输出是
{"id": "1", "name": "Franc"};
{"id": "1"};
如何从一个对象数组中删除一个属性或键
forEach 假设你有一个对象数组,想通过从数组中删除一个键来返回新的数组,Array ,该函数包含对每个对象调用的回调,使用delete 语法来删除并返回一个新的对象数组。
array.forEach(function(obj){ delete obj.key });
总结
希望这篇文章能教会你在javascript中从对象或对象数组中删除键的多种方法。