Reputation: 3
in this array of objects
array = [
0: foo1{name: "111", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
1: foo1 {name: "222", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
2: foo2 {name: "3", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
3: foo2 {name: "5", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
4: foo3 {name: "22", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
5: foo1 {name: "444", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
]
exist a method to filter by class of object?. example :
let arr = array.filter( foo => foo === foo1) ;
// expected output:
arr = [
0: foo1 {name: "111", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
1: foo1 {name: "222", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
2: foo1 {name: "444", energy: 0, capacity: 0, comsuption: 0, season: 0, …}
]
https://stackblitz.com/edit/js-mkeg2b thx
Upvotes: 0
Views: 1164
Reputation: 2085
You can also use constructor.name
to filter the array based on constructor.
let arr = array.filter(foo => foo.constructor.name === "foo1")
Upvotes: 0
Reputation: 20039
Using instanceof
The instanceof operator tests to see if the prototype property of a constructor appears anywhere in the prototype chain of an object. The return value is a boolean value.
let arr = array.filter(foo => foo instanceof foo1)
let arr = []
class foo1 {
constructor(name, value) {
this.name = '',
this.value = 0
}
}
class foo2 {
constructor(name, value) {
this.name = '',
this.value = 0
}
}
class foo3 {
constructor(name, value) {
this.name = '',
this.value = 0
}
}
let bar1 = new foo1();
let bar2 = new foo2();
let bar3 = new foo3();
arr.push(bar1, bar1, bar1, bar1, bar2, bar3, bar2, bar1);
document.write('check in browser console')
console.log(arr.filter(foo => foo instanceof foo1))
Upvotes: 1
Reputation: 305
const
array = [{ foo1: { name: "111", energy: 0, capacity: 0, comsuption: 0, season: 0 } }, { foo1: { name: "222", energy: 0, capacity: 0, comsuption: 0, season: 0 } }, { foo2: { name: "3", energy: 0, capacity: 0, comsuption: 0, season: 0 } }, { foo2: { name: "5", energy: 0, capacity: 0, comsuption: 0, season: 0 } }, { foo3: { name: "22", energy: 0, capacity: 0, comsuption: 0, season: 0 } }, { foo1: { name: "444", energy: 0, capacity: 0, comsuption: 0, season: 0 } }]
let result = array.filter(o=>o.foo1);
console.log(result);
Upvotes: 0