如果对象中的属性不存在,如何从数组中删除对象

Cka*_*ppo 5 javascript arrays lodash

我有以下数据收集

[{
 id: '1',
 date: '2017-01-01',
 value: 2
 },
 {
 id: '2',
 date: '2017-01-02',
 value: 3
 },
 {
 id: '3',
 value: 3
 },
 id: '4',
 date: '2017-01-02',
 value: 3
 }]
Run Code Online (Sandbox Code Playgroud)

我想删除任何没有“日期”属性的对象。在上面的示例中,应删除 id 为 3 的对象。

完成的对象应该是这样的

[{
 id: '1',
 date: '2017-01-01',
 value: 2
 },
 {
 id: '2',
 date: '2017-01-02',
 value: 3
 },
 id: '4',
 date: '2017-01-02',
 value: 3
 }]
Run Code Online (Sandbox Code Playgroud)

我试图用 lodash 查找并删除一个未定义的值。这是行不通的。该对象看起来与它进入时完全一样。

  _.each(obj, (val) => {
    _.remove(val, value => value['XXX-BUDAT'] === undefined);
   });
Run Code Online (Sandbox Code Playgroud)

我如何为此目的使用 lodash?

提前致谢

mic*_*ckl 5

您可以使用.filter()Object.keys().includes()

let input = [
   { id: '1', date: '2017-01-01', value: 2},
   { id: '2', date: '2017-01-02', value: 3},
   { id: '3', value: 3 },
   { id: '4', date: '2017-01-02', value: 3 }
]
 
 let output = input.filter(obj => Object.keys(obj).includes("date"));
 
 console.log(output);
Run Code Online (Sandbox Code Playgroud)