如何解决子数组是否包含某个值?
我有一个这样的数组:
var = [
{
"a": "value","b": "value2"
},{
"a": "value3","b": "value4"
}
...
]
我需要查找是否有任何子数组包含某个值。
我试过了
var.flat().includes("value")
但由于某种原因总是返回 false 并且 .flat()
甚至没有展平数组。
我也试过
var.includes("value")
没有 .flat()
但只有在顶级包含它时才会返回。
我能做到
var = [
"a": [
"value","value3"
...
],"b": [
"value2","value4"
...
]
]
但我宁愿不这样做,因为那需要我重写一些我已经写过的代码。
解决方法
首先使用 flatMap
将所有嵌套值提取到单个平面数组中:
const objs = [
{
"a": "value","b": "value2"
},{
"a": "value3","b": "value4"
}
];
const values = objs.flatMap(Object.values);
console.log(values.includes("value"));
您可以使用 some
进行迭代(它会在遇到第一个 value
时立即停止循环),结合使用 Object.values
(从对象获取值数组)和 {{1 }}(检查数组是否有.includes
),
value
在您的代码中,varr
已经展平了对象数组。由于您要检查对象值。使用varr.map(Object.values).flat()
varr = [
{
a: "value",b: "value2",},{
a: "value3",b: "value4",];
console.log(varr.map(Object.values).flat().includes("value"));
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。