📜  Collect.js whereInstanceOf()函数(1)

📅  最后修改于: 2023-12-03 14:40:09.770000             🧑  作者: Mango

Collect.js 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' }]

上面的例子中,我们有一个包含了 PersonCar 对象的集合。通过调用 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']

在这个例子中,我们首先定义了几个类 AnimalCatDog。然后,我们创建了一个包含了 CatDog 实例的集合。通过调用 whereInstanceOf(Cat)whereInstanceOf(Dog),我们分别获取了只包含 CatDog 实例的两个集合。

接下来,我们分别打印了筛选后的集合中所有动物的名字。注意到 pluck() 函数被用于从对象中获取 name 属性值。

总结

whereInstanceOf() 函数是 Collect.js 库中一个强大的函数,通过它我们可以轻松地从集合中获取指定类的实例,并返回一个新的集合。这使得筛选和过滤集合变得非常简便,进一步提高了代码的可读性和易用性。