使用Underscore.js移除JavaScript对象中的键值对
移除对象属性并保留对象结构的解决方案
你用_.without出问题是因为这个方法本来就是处理数组的,把对象传进去会被当成类数组解析,自然返回无键的数组,不符合你的需求。下面给你几种靠谱的解决办法:
Lodash 相关方法
- _.omit(推荐):专门用来移除对象的指定属性,不会修改原对象,直接返回处理后的新对象
// 移除单个属性 const result = _.omit(data, 'email'); // 移除多个属性 const result = _.omit(data, ['email', 'phone']); - _.pick:如果明确知道要保留哪些属性,用这个更直接,只保留指定属性、排除其他
const result = _.pick(data, ['phone', 'firstName', 'lastName']);
原生 JavaScript 方法(无需 Lodash)
- 解构赋值(ES6+):最简洁的方式,不会修改原对象
const { email, ...newData } = data; // newData 就是你要的 {phone: '3434344332', firstName: 'john', lastName: 'Doe'} - delete 操作符:允许修改原对象的话可以直接用;不想改原对象就先浅拷贝再删除
// 修改原对象 delete data.email; // 不修改原对象 const newData = {...data}; delete newData.email;
内容的提问来源于stack exchange,提问作者johnmills
相关产品推荐
相关产品推荐

