在前端开发中,我们经常需要删除对象中的空属性。这些空属性可能是 null
、undefined
或者 ''
等 falsy 值。本文将介绍如何使用 Underscore.js 来删除对象中的空属性,并提供一些示例代码和指导意义。
Underscore.js 简介
Underscore.js 是一个 JavaScript 工具库,提供了许多实用的函数来简化 JavaScript 编程。其中包括对对象和数组的操作函数。在本文中,我们将使用 Underscore.js 的 pick()
和 compact()
函数来删除对象中的空属性。
pick()
函数
pick()
函数可以从对象中选择指定的属性并返回一个新的对象。它接受一个对象作为第一个参数,后跟任意数量的字符串参数,这些字符串参数表示要选择的属性。例如:
_.pick({name: 'John', age: 30, gender: undefined}, 'name', 'age'); // => {name: 'John', age: 30}
在上面的示例中,我们从对象 {name: 'John', age: 30, gender: undefined}
中选择了 name
和 age
属性,并返回了一个新的对象 {name: 'John', age: 30}
。
注意到我们传递了一个值为 undefined
的 gender
属性。这个属性在新的对象中被省略了。这说明 pick()
函数会自动过滤掉对象中的 falsy 属性。
compact()
函数
compact()
函数可以从数组中删除所有的 falsy 值,并返回一个新的数组。它接受一个数组作为参数,例如:
_.compact([0, 1, false, 2, '', 3, null, undefined]); // => [1, 2, 3]
在上面的示例中,我们传递了一个包含 falsy 值的数组 [0, 1, false, 2, '', 3, null, undefined]
。compact()
函数会将其中的 falsy 值全部删除,并返回一个新的数组 [1, 2, 3]
。
删除对象中的空属性
有了以上两个函数,我们就可以很容易地删除对象中的空属性了。具体来说,我们可以使用 pick()
函数选择对象中所有非空属性,并返回一个新的对象,然后再使用 compact()
函数删除该对象中的 falsy 值。示例如下:
var obj = {name: 'John', age: 30, address: '', phone: null}; var newObj = _.compact(_.pick(obj, function(value) { return !!value; })); // => {name: 'John', age: 30}
在上面的示例中,我们定义了一个包含空属性的对象 {name: 'John', age: 30, address: '', phone: null}
。我们使用 pick()
函数选择了所有非空属性,并返回了一个新的对象 {name: 'John', age: 30, phone: null}
。注意到这个对象中依然包含一个值为 null
的属性 phone
。最后,我们使用 compact()
函数删除了该对象中的 falsy 值,得到了最终的结果 {name: 'John', age: 30}
。
指导意义
本文介绍了如何使用 Underscore.js 来删除对象中的空属性。具体来说,我们使用了 pick()
和 compact()
函数来过滤掉对象中的 falsy 属性。通过本文的学习,我们可以更加深入地理解 JavaScript 中的 truthy 和 falsy 值,并且掌握了使用 Underscore.js 来操作对象和数组的技巧。
同时,我们也应该注意到,在实际开发中,我们经常需要删除的不仅仅是空属性,还可能包括一些无用的属性。因此,在使用 Underscore.js 进行
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/11609