我有这个:

var filters = {a: 1, b: undefined}


我想要这个:

{ a:1 }


有什么办法可以通过使用像{...filters}这样的现代Javascript功能来获得上述对象?

最佳答案

除非您事先知道一个undefined的奇异属性,否则使用rest语法或类似的新方法是不可能的,尽管可以通过序列化和反序列化该对象来实现。代码很短,但是很笨拙,仅当对象中的所有内容都可序列化时才有效:



var filters = {a: 1, b: undefined};
var filtersNoUndef = JSON.parse(JSON.stringify(filters));
console.log(filtersNoUndef);





或者,当然,您可以手动遍历属性:



var filters = {a: 1, b: undefined};
const filtersNoUndef = { ...filters };
Object.entries(filtersNoUndef).forEach(([key, val]) => {
  if (val === undefined) {
    delete filtersNoUndef[key];
  }
});
console.log(filtersNoUndef);

10-02 19:07