📅  最后修改于: 2023-12-03 14:40:09.770000             🧑  作者: Mango
whereInstanceOf()
函数whereInstanceOf()
是 Collect.js 库中的一个函数,用于从给定的集合中筛选出指定类的实例。它提供了一种简洁的方式来过滤集合中的对象,只保留特定类的实例。
使用 whereInstanceOf()
函数,需要将集合作为第一个参数,而类名作为第二个参数传递给它。
const collection = [
new Person('John'),
new Person('Jane'),
new Car('Toyota'),
new Person('Mike')
];
const filtered = collect(collection).whereInstanceOf(Person);
console.log(filtered.all());
// Output: [Person{ name: 'John' }, Person{ name: 'Jane' }, Person{ name: 'Mike' }]
上面的例子中,我们有一个包含了 Person
和 Car
对象的集合。通过调用 whereInstanceOf(Person)
,我们只保留了集合中属于 Person
类的实例,并返回了筛选后的集合。
whereInstanceOf()
函数返回一个新的、被筛选的集合,其中包含了与指定类相对应的实例。
下面是一个使用 whereInstanceOf()
的更复杂的示例:
class Animal {
constructor(name) {
this.name = name;
}
sound() {
console.log('Making sound...');
}
}
class Cat extends Animal {
meow() {
console.log('Meow!');
}
}
class Dog extends Animal {
bark() {
console.log('Woof!');
}
}
const collection = [
new Cat('Tom'),
new Dog('Max'),
new Cat('Simba'),
new Dog('Buddy')
];
const cats = collect(collection).whereInstanceOf(Cat);
const dogs = collect(collection).whereInstanceOf(Dog);
console.log(cats.pluck('name').all());
// Output: ['Tom', 'Simba']
console.log(dogs.pluck('name').all());
// Output: ['Max', 'Buddy']
在这个例子中,我们首先定义了几个类 Animal
、Cat
和 Dog
。然后,我们创建了一个包含了 Cat
和 Dog
实例的集合。通过调用 whereInstanceOf(Cat)
和 whereInstanceOf(Dog)
,我们分别获取了只包含 Cat
和 Dog
实例的两个集合。
接下来,我们分别打印了筛选后的集合中所有动物的名字。注意到 pluck()
函数被用于从对象中获取 name
属性值。
whereInstanceOf()
函数是 Collect.js 库中一个强大的函数,通过它我们可以轻松地从集合中获取指定类的实例,并返回一个新的集合。这使得筛选和过滤集合变得非常简便,进一步提高了代码的可读性和易用性。