子数组是否包含某个值?
Does subarray contain a certain value?
我有一个这样的数组:
var = [
{
"a": "value",
"b": "value2"
},
{
"a": "value3",
"b": "value4"
}
...
]
我需要查找是否有任何子数组包含特定值。
我试过了
var.flat().includes("value")
但由于某些原因总是 return 错误并且 .flat()
甚至没有展平数组。
我也试过了
var.includes("value")
没有 .flat()
但只有 return 如果顶层包含它。
我可以
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
(从对象获取值数组)和 .includes
(检查数组是否有value
),
const data = [
{
a: "value",
b: "value2",
},
{
a: "value3",
b: "value4",
},
];
const valid = data.some((d) => Object.values(d).includes("value"));
console.log(valid);
在您的代码中,varr
已经展平了对象数组。因为您想签入对象值。使用 varr.map(Object.values).flat()
varr = [
{
a: "value",
b: "value2",
},
{
a: "value3",
b: "value4",
},
];
console.log(varr.map(Object.values).flat().includes("value"));
我有一个这样的数组:
var = [
{
"a": "value",
"b": "value2"
},
{
"a": "value3",
"b": "value4"
}
...
]
我需要查找是否有任何子数组包含特定值。
我试过了
var.flat().includes("value")
但由于某些原因总是 return 错误并且 .flat()
甚至没有展平数组。
我也试过了
var.includes("value")
没有 .flat()
但只有 return 如果顶层包含它。
我可以
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
(从对象获取值数组)和 .includes
(检查数组是否有value
),
const data = [
{
a: "value",
b: "value2",
},
{
a: "value3",
b: "value4",
},
];
const valid = data.some((d) => Object.values(d).includes("value"));
console.log(valid);
在您的代码中,varr
已经展平了对象数组。因为您想签入对象值。使用 varr.map(Object.values).flat()
varr = [
{
a: "value",
b: "value2",
},
{
a: "value3",
b: "value4",
},
];
console.log(varr.map(Object.values).flat().includes("value"));