gpt4 book ai didi

javascript - 用于匹配 ID 并检查属性是否存在的数组过滤方法

转载 作者:行者123 更新时间:2023-12-02 23:52:16 24 4
gpt4 key购买 nike

我目前正在使用一种方法来尝试过滤一些数组,该方法几乎可以工作,但我似乎无法访问确切的值 -

我进行调用并将每个返回的数组添加到一个更大的数组中,然后这些数组将被分配一个productId,也许还有一些数据,我使用以下方式附加productId:

    data.push({'productId':  product.id});

不幸的是,这向数组添加了一个新对象,这意味着除非 ProductId 位于每个数组的第一个对象中,否则下面的函数将无法工作:

    let matchedArray = data.flatMap(arr => arr.filter(obj => obj.productId == id))

我需要做的是将数组过滤到与productId和ID匹配的子数组,并且该子数组包含一些数据字段,例如“名称” - 因此它会检查名称是否不为空。

数据集如下所示(子数组数组)

  id = 12345


data = [[],[],[],[],[],[],[],[],[{"id":"123","name":"africa soul
2019","startDate":null,"endDate":null,"country":null,"city":null,"type":"Ev
ent","members":null},{"productId":"12345"}],[],[],[],[],[],[],
[],[],[],[],[]]

正如您所看到的,productId 已附加到数组中,但现在无法使用我的筛选方法,我需要筛选具有匹配 ID 的正确数组,并且至少有一个字段也存在。我需要更改手动附加productId 的方式,或者更改过滤方法?

如果您能提供帮助,非常感谢

最佳答案

如果你想filter所有具有 some 的数组productId 等于给定值的对象:

let data = [[],[],[],[],[],[],[],[],[{"id":"123","name":"africa soul 2019","startDate":null,"endDate":null,"country":null,"city":null,"type":"Event","members":null},{"productId":"12345"}],[],[],[],[],[],[],[],[],[],[],[]],
id = "12345";

let filtered = data.filter(arr => arr.some(a => a.productId === id))

console.log(filtered)

如果您想获得第一个匹配项,请使用find而不是filter

关于javascript - 用于匹配 ID 并检查属性是否存在的数组过滤方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55587347/

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