javascript - Javascript按类过滤对象数组
问题描述
在这个对象数组中
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, …}
]
是否存在按对象类过滤的方法?例子 :
let arr = array.filter( foo => foo === foo1) ;
// 预期输出:
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, …}
]
解决方案
instanceof 运算符测试构造函数的原型属性是否出现在对象的原型链中的任何位置。返回值是一个布尔值。
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))
推荐阅读
- azure-eventhub - 如何使用基于分区键的 Azure Stream Analytics 查询数据
- c++ - 如何在 C++ 中绕过 << 调用,就像“#ifndef DEBUG”宏一样?
- javascript - QuillJS 在
标签
- jquery - 自动对焦 jQuery 脚本不针对下一个输入字段
- python - urllib3.ProxyManager 给出身份验证错误
- file - 比较两个文本文件中的字符串
- arrays - BigQuery - 从一组 Json 文件中提取数据
- docker - 获取失败............哈希和不匹配
- php - PHP - 如何显示在 HTML 页面中收到的 POST 数据
- python - GPU显存满了怎么办