如何在javascript中比较array1的obj和array的obj

如何在javascript中比较array1的obj和array的obj,javascript,node.js,typescript,Javascript,Node.js,Typescript,我被代码卡住了。实际上,我想使用typescript/javascript过滤数据层中的元素 我定义了如下所示的数据层 track: { products }, dataLayers: { current: { cart: { items } } } products?: IProduct[] export interface IProduct { id: string quantity?: string name?: string } items?: ICartIt

我被代码卡住了。实际上,我想使用typescript/javascript过滤数据层中的元素

我定义了如下所示的数据层

track: { products },
dataLayers: { current: { cart: { items } } }

products?: IProduct[]

export interface IProduct {
    id: string
    quantity?: string
    name?: string
}
items?: ICartItem[]

export interface ICartItem {
    id: string
    brand: string
    name: string
    quantity: number

}
跟踪:{products}

产品具有{id,数量}

数据层:{current:{cart:{items}}}

项目具有{id、品牌、名称、数量}

现在我想筛选id并获取产品的名称,例如:

例如: *

预期产出

id:a123,姓名:'Reynolds'

id:a345,姓名:'Faber-Castell'

我的代码:

const id = products.map(product => { return product.id})
items.filter((item) => {
    return item.id === id
})
.map((item)=> {
   const { id, name } = item
   console.log("id" + id)
   console.log("name" + name)
})
实际产出

给出错误

**

**


为什么我无法将item.id与id进行比较

您正在将字符串数组
id
与作为字符串的每个item
id
进行比较。你喜欢下面的

items.filter(item => id.includes(item.id))

在代码的第一行中,您将从products数组中获取ID的数组。因此,id只是一个数组

const id: string[] = products.map(product => { return product.id })
因此,下面的代码将完成这项工作

items.filter((item) => id.includes(item.id) )

此外,如果您使用typescript编码,请养成将变量与其类型一起使用的习惯[number,string,boolean,string[]…]

因为
id
是一个数组<代码>id.includes(item.id)
const id: string[] = products.map(product => { return product.id })
items.filter((item) => id.includes(item.id) )