javascript - 如何在对象数组中查找特定键是否为真
问题描述
我有这个数组,如果有一个等于 9 的“三”,我想得到一个布尔值(真)
myArr = [{苹果:6,篮子:[{一:1,二:2,三:3},{一:4,二:5,三:6}]},{苹果:9,篮:[{一:1,二:2,三:3},{一:4,二:5,三:9}]}]
我尝试了什么:
enter code here
this.myArr.forEach( data => {
if(data.basket.filter(cur => cur.one === 0 || cur.three === 9)) {
console.log('true')
}
})
由于某种原因,这总是正确的,我不知道为什么。
解决方案
.filter
将始终返回通过测试的元素数组,并且数组是真实的。即使没有元素通过测试,数组仍然是真实的:
const arr = [1, 2, 3].filter(() => false);
if (arr) {
console.log('truthy');
}
改为使用.some
,以查看是否至少有一个元素通过了测试:
const myArr = [{
apple: 6,
basket: [{
one: 1,
two: 2,
three: 3
}, {
one: 4,
two: 5,
three: 6
}]
}, {
apple: 9,
basket: [{
one: 1,
two: 2,
three: 3
}, {
one: 4,
two: 5,
three: 9
}]
}]
myArr.forEach(data => {
if (data.basket.some(cur => cur.one === 0 || cur.three === 9)) {
console.log('true');
}
});
推荐阅读
- sql - 获取特定数据库的 SQL Server 执行查询历史
- typescript - ts-node 没有拾取 d.ts 文件,但 tsc 编译工作正常
- sql - 为给定场景编写 SQL 查询
- gradle - 在 Gradle 多项目中,子项目的 SourceSets 是否有作用域?
- php - 我们如何获得动态下拉菜单以根据先前的下拉菜单显示特定选项,并能够随机化输出?
- java - 用vue和spring下载excel文件
- mysql - 尝试从链接服务器检索数据 - 在“等待初始通信数据包”时丢失与 MySQL 服务器的连接,系统错误:10060”
- python-3.x - 无法在标签上显示变量
- javascript - React - 如何构建一个简单的按钮应用程序?
- tfs - 如何从 TFS WorkItemTrackingHttpClient QueryByWiqlAsync 分页结果