gpt4 book ai didi

javascript - 根据 id 数组过滤对象数组中的 id

转载 作者:行者123 更新时间:2023-12-05 01:55:22 25 4
gpt4 key购买 nike

我正在尝试为添加到心愿单的项目显示心形图标。我正在使用本地存储来保存愿望 list 中的项目。我有一个 ID 数组,例如 wishlistIds = [123,425,212,512,516]。所以我想检查该数组中的 id 是否与对象数组(即产品)匹配。对象的产品数组如下所示;

 items = [{id:123, productName:"Cheese", price: 15.99}, {id:599, productName: "Honey", price:21.99}]

我一直在尝试使用 Array.filter 方法来实现我想要的,但无法使其工作;

wishlistIds.filter(w => w.id === items.id)

上面的代码返回 wishlistIds 内的所有 id,而不过滤项目内的 id。解决这个问题的正确方法是什么?

最佳答案

创建一个 Set项目 ID 并使用它来过滤心愿单数组

const wishlistIds = [123,425,212,512,516]
const items = [{id:123, productName:"Cheese", price: 15.99}, {id:599, productName: "Honey", price:21.99}]

const itemIds = new Set(items.map(({ id }) => id))

const filteredWishlist = wishlistIds.filter(id => itemIds.has(id))

console.log(filteredWishlist)

我在这里使用 Set 因为 Set.prototype.has()O(1) 时间复杂度而不是 Array.prototype.includes()O(n)

参见 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Set#performance

关于javascript - 根据 id 数组过滤对象数组中的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70253027/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com