如何解决过滤对象的嵌套数组在 JS 中返回未定义
我正在尝试为每个产品检查标签对象数组是否至少有一个节目标签。
const allProducts = this.products.forEach(product =>
product.tags.some(item => item.tagName !== 'shows'),)
数据样本:
Products: [
{
productId:...
productName: ...
tags:[
{
tagId:...
tagName:...
}
{
tagId:...
tagName:...
}
]
},{
productId:...
productName: ...
tags:[
{
tagId:...
tagName:...
}
{
tagId:...
tagName:...
}
]
}
]
似乎在 some() 之后它不起作用。出了什么问题,如何修复?
解决方法
首先, forEach
不返回任何内容。所以你应该改用 .filter
。
对于每个产品检查对象的标签数组是否至少有一个标签 的节目。
第二,条件应该是===
而不是!==
,此外,need return the true if all products are passing the some() not filter
==> 解决方案:
const allValidProducts = this.products.filter(product => product.tags.some(item => item.tagName === 'shows'));
const result = allValidProducts.length === this.products.length;
如您所见,.some
工作正常。
const array = [1,2,3,4,5];
console.log(array.some(element => element % 2 === 0));
// expected output: true
CORS_ORIGIN_ALLOW_ALL = True
如果过滤数组的长度保持不变,则所有产品都通过 const allProducts = this.products.filter(product => product.tags.some(item => item.tagName !== "shows")).length == allProducts.length;
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。