Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
312 views
in Technique[技术] by (71.8m points)

javascript - How to remove object from array if property in object do not exist

I have the following collection of data

[{
 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
 }]

I want to delete any object that does not have the 'date' property. In the example above, the object with the id 3 should be deleted.

The finished object should look like this

[{
 id: '1',
 date: '2017-01-01',
 value: 2
 },
 {
 id: '2',
 date: '2017-01-02',
 value: 3
 },
 id: '4',
 date: '2017-01-02',
 value: 3
 }]

I tried to find and delete a undefined value with lodash. It does not work. The object looks exactly as it is entering.

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

How can I use lodash for this purpose?

Thanks in advance

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

You can use .filter(), Object.keys(), and .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);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to OStack Knowledge Sharing Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...