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中使用它。