假设我有一个这样的对象:
object = {date: '', time: '', bar: ''}
如何使用其值删除日期和时间键。我不想使用删除。是否有可能使用过滤功能?
答案 0 :(得分:3)
如果您能够使用es6功能,并且不介意创建新对象,则可以使用destructuring + rest运算符:
const yourObject = {date: '', time: '', bar: ''};
const {date, time, ...other} = yourObject;
console.log(other);
答案 1 :(得分:2)
您可以使用Object.keys获取对象的所有键,然后过滤并缩小以重建新对象:
object = Object.keys(object).filter(function(key) {
return key !== 'date' && key !== 'time';
}).reduce(function(acc, key) {
acc[key] = object[key];
return acc;
}, {});
通过
简单地使用删除可能更容易答案 2 :(得分:1)
你可以使用lodash。
var object = {date: '', time: '', bar: ''};
_.omit(object, ['date','time']);
传入lodash函数内的数组中的键
答案 3 :(得分:1)
“如何使用其值移除日期和时间键。我不想使用
delete
。”
当然,如果您因某种原因不喜欢Reflect.deleteProperty
运算符,则可以使用delete
。
var object = {date: '', time: '', bar: ''};
["date","time"].forEach(k => Reflect.deleteProperty(object, k));
console.log(object);
这实际上从对象中删除了属性,而不是创建新对象并覆盖变量引用,这不是相同的操作,并且可能会产生不希望的副作用,具体取决于它的使用方式。