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

时间:2018-01-09 16:52:22

标签: javascript

假设我有一个这样的对象:

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

如何使用其值删除日期和时间键。我不想使用删除。是否有可能使用过滤功能?

4 个答案:

答案 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);

这实际上从对象中删除了属性,而不是创建新对象并覆盖变量引用,这不是相同的操作,并且可能会产生不希望的副作用,具体取决于它的使用方式。

相关问题