我有一个对象b数组和一个数组a。我希望将b筛选为只有to值在a中的对象。我尝试过很多种方法,但我总是收到一个空数组。例如,最终结果将是一个数组,其中包含来自数组的第一个和第二个对象,而不是最后一个。
const a = [
"dfd302f4-571b-42da-9b35-07d1d9b6e68d",
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32"
];
const b = [
{
name: "toto",
to: [
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32"
]
},
{ name: "tota", to: ["dfd302f4-571b-42da-9b35-07d1d9b6e68d"] },
{ name: "tota", to: ["8418v4rfe484evf48ez64vrfe6zv4r8ezvf4"] }
];
console.log(b.filter(user => a.includes(user.to)))发布于 2022-05-06 22:18:23
需要用数组检查数组(使用一些和包含)
const a = [
"dfd302f4-571b-42da-9b35-07d1d9b6e68d",
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32",
];
const b = [
{
name: "toto",
to: [
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32",
],
},
{ name: "tota", to: ["dfd302f4-571b-42da-9b35-07d1d9b6e68d"] },
{ name: "tota", to: ["8418v4rfe484evf48ez64vrfe6zv4r8ezvf4"] },
];
console.log(b.filter(({ to }) => to.some((item) => a.includes(item))));
发布于 2022-05-06 22:18:56
你的企图,
console.log(b.filter(user => a.includes(user.to)))无法工作,因为user.to是一个数组,而a不包含任何数组。
您需要使用every方法来检查to属性中的数组的所有元素是否都在a中。
const a = [
"dfd302f4-571b-42da-9b35-07d1d9b6e68d",
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32"
];
const b = [
{
name: "toto",
to: [
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32"
]
},
{ name: "tota", to: ["dfd302f4-571b-42da-9b35-07d1d9b6e68d"] },
{ name: "tota", to: ["8418v4rfe484evf48ez64vrfe6zv4r8ezvf4"] }
];
console.log(b.filter(user => user.to.every(str => a.includes(str))));
编辑:您可以使用some而不是every,如@SivaKV的答案。这取决于您是否希望包含一个条目,其" to“数组在a中包含一些项,而有些项不包含(”每个“不包括这些项,但”一些“项),从您的问题中看并不清楚。
发布于 2022-05-06 22:21:59
您可以使用.some或.every,这取决于.to属性的一个或所有元素必须在数组a中是否足够。
const a = [
"dfd302f4-571b-42da-9b35-07d1d9b6e68d",
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32"
];
const b = [
{
name: "toto",
to: [
"d7099abd-6872-48db-bdd7-ca99e4513586",
"93272093-5089-40cd-8c3d-2412377e1f32"
]
},
{ name: "tota", to: ["dfd302f4-571b-42da-9b35-07d1d9b6e68d"] },
{ name: "tota", to: ["8418v4rfe484evf48ez64vrfe6zv4r8ezvf4"] }
];
console.log(b.filter(u => u.to.every(e=>a.includes(e))))
https://stackoverflow.com/questions/72147859
复制相似问题