如何在javascript中比较array1的obj和array的obj
我被代码卡住了。实际上,我想使用typescript/javascript过滤数据层中的元素 我定义了如下所示的数据层如何在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
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
与作为字符串的每个itemid
进行比较。你喜欢下面的
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) )