Javascript 从对象中删除一些键/值对

Javascript 从对象中删除一些键/值对,javascript,Javascript,假设我有这样一个对象: object = {date: '', time: '', bar: ''} 如何删除日期和时间键及其值。我不想使用删除。是否可以使用筛选功能?您可以使用Object.keys获取对象的所有键,然后筛选并减少以重建新对象: object = Object.keys(object).filter(function(key) { return key !== 'date' && key !== 'time'; }).reduce(function(a

假设我有这样一个对象:

object = {date: '', time: '', bar: ''}

如何删除日期和时间键及其值。我不想使用删除。是否可以使用筛选功能?

您可以使用Object.keys获取对象的所有键,然后筛选并减少以重建新对象:

object = Object.keys(object).filter(function(key) {
    return key !== 'date' && key !== 'time';
}).reduce(function(acc, key) {
     acc[key] = object[key];
     return acc;
}, {});

简单地使用delete可能会更容易,但如果您能够使用es6功能,并且不介意创建新对象,则可以使用destructuring+rest操作符:

const yourObject = {date: '', time: '', bar: ''};
const {date, time, ...other} = yourObject;
console.log(other);
你可以用lodash

var object = {date: '', time: '', bar: ''};
_.omit(object, ['date','time']);
在lodash函数内传入数组中的键

“如何删除日期和时间键及其值。我不想使用
delete

当然,如果出于某种原因不喜欢
delete
操作符,可以使用
Reflect.deleteProperty

var对象={date:'',time:'',bar:''};
[“日期”,“时间”].forEach(k=>Reflect.deleteProperty(object,k));

console.log(对象)“我不想使用删除”为什么不<代码>删除对象['date'];删除对象['time']是显而易见的答案。筛选不会删除。您的问题不清楚。有没有一种方法可以不使用delete来实现这一点?您可以使用
省略
(Lodash/下划线/其他?)或编写自己的。请注意,这并不适用于所有浏览器。否则是一个很好的解决方案。这不是删除,而是创建一个新对象。很好的答案,另一个增强功能…如果一个键包含一个特定的值。例如,如果{status:all},我将如何删除包含值all的这个键?您一直都可以访问对象数组,因此可以执行任何您想要的操作。我在reduce中使用它,但是你也可以在filter中使用它。