gpt4 book ai didi

javascript - 循环遍历数组数组中的每个对象找到 id,将其与数组中的另一个对象匹配并将它们连接在一起

转载 作者:行者123 更新时间:2023-12-01 03:57:41 25 4
gpt4 key购买 nike

所以我有一个名为“products”的数组,其中包含对象,并且每个对象都有一个唯一的 id。我还有另一个名为“productsAdditionalInfo”的数组,其中包含与“产品”相关的附加信息,每个对象都有一个与“产品”数组中的对象之一匹配的owner_id。“productsAdditionalInfo”在数组内可能有许多对象,但相对于该数组始终具有相同的owner_id。

我尝试循环遍历“productsAdditionalInfo”数组获取“owner_id”并将其与产品数组中的“id”进行匹配,然后将命名空间添加为键,将值添加为值,然后将其作为新值返回大批。然而,我似乎陷入了第一个障碍。我在控制台中得到“持续时间”的第一个键,然后得到未定义的“命名空间”。

我希望这是有道理的,如果我已经注释掉了一个应该如何做的例子。我很感激任何帮助。

编辑:有些人建议这与 another question 类似/相同您将它们合并在一起,但我相信我的问题是不同的,因为我没有将它们完全合并在一起,只是某些信息。

let products = [ {id: 102, type: "toy"}, {id: 245, type: "food"}, {id: 312, type: "clothes"} ]

let productsAdditionalInfo = [
[{namespace: "Duration", value: 5, owner_id: 245}, {namespace: "effect", value: "Tail", owner_id: 245}],
[{namespace: "Supplier", owner_id: 312, value: "rev"}],
[{namespace: "amount", value: 0, owner_id: 102}, {namespace: "effect", value: "plush", owner_id: 102}]
]

$.each(productsAdditionalInfo, function( index, product ) {
console.log( product[index].namespace );
});


// let whatItShouldBe = [ {id: 102, type: "toy", amount: 0, effect: "plush" }, {id: 245, type: "food", Duration: 5, effect: "Tail"}, {id: 312, type: "clothes", Supplier: "rev"} ]
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

最佳答案

实现此目的的一种方法是循环遍历每个产品,根据 owner_id 检索关联的 productAdditionsInfo。从那里,您可以从添加的内容创建一个对象并将两者合并在一起,如下所示:

let products = [{id: 102, type: "toy"}, {id: 245, type: "food"}, {id: 312, type: "clothes"}]
let productsAdditionalInfo = [
[{namespace: "Duration", value: 5, owner_id: 245}, {namespace: "effect", value: "Tail", owner_id: 245}],
[{namespace: "Supplier", owner_id: 312, value: "rev"}],
[{namespace: "amount", value: 0, owner_id: 102}, {namespace: "effect", value: "plush", owner_id: 102}]
]

let merged = products.map(p => {
var info = productsAdditionalInfo.filter(i => i[0].owner_id == p.id)[0].map(i => ({ [i.namespace]: i.value }));
info.push(p);
return Object.assign(...info);
});

console.log(merged);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

这是假设 productsAdditionalInfo 中的二级数组始终按相同的 owner_id 分组。

关于javascript - 循环遍历数组数组中的每个对象找到 id,将其与数组中的另一个对象匹配并将它们连接在一起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61460520/

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