gpt4 book ai didi

javascript - 从另一个数组的值派生一个数组

转载 作者:行者123 更新时间:2023-11-30 16:03:08 25 4
gpt4 key购买 nike

我在一个 Angular 为 2 的组件中有这个产品数组:

products = [{name: "product1", product_properties: [{name: "color", value: "blue"}, {name: "size", value: "small"}]}, 
{name: "product2", product_properties: [{name: "color", value: "yellow"}, {name: "size", value: "medium"]},
{name: "product3", product_properties: [{name: "color", value: "green"}, {name: "size", value: "large"},
{name: "product4", product_properties: [{name: "color", value: "green"}, {name: "size", value: "small"}]}
{name: "product5", product_properties: [{name: "color", value: "yellow"}, {name: "size", value: "medium"}]

循环遍历此数组并使用 typescript 或 javascript 派生如下所示的数组的最有效方法是什么:

derivedArray = [{property_name: "color", values: ["blue", "yellow", "green"]}, 
{property_name: "size", values: ["small", "medium", "large"]}]

最佳答案

你的数组有一些语法错误,我修正它们:

var inData = [
{name: "product1", product_properties:[{name: "color", value: "blue"}, {name: "size", value: "small"} ]},
{name: "product2", product_properties:[{name: "color", value: "yellow"}, {name: "size", value: "medium"}]},
{name: "product3", product_properties:[{name: "color", value: "green"}, {name: "size", value: "large"}]}
];

让我们构建 property => values 的 hashmap:

var hash = inData.reduce((acc, p) => {
p.product_properties.forEach(prop => {
if (!acc[prop.name]) acc[prop.name] = [];
if (!~acc[prop.name].indexOf(prop.value)) // filter duplicates
acc[prop.name].push(prop.value);});
return acc;
}, {});

现在构建请求的数据结构:

Object.keys(hash).map(key => ({property_name: key, values: hash[key]}))

结果是:

[
{"property_name":"color","values":["blue","yellow","green"]},
{"property_name":"size","values":["small","medium","large"]}
]

关于javascript - 从另一个数组的值派生一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37398481/

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