首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据不同的键将值从两个对象中分组成一个对象数组

根据不同的键将值从两个对象中分组成一个对象数组
EN

Stack Overflow用户
提问于 2022-06-24 15:37:54
回答 2查看 42关注 0票数 -1

我需要将两个对象分组为一个对象数组。

起始物体:

代码语言:javascript
复制
{strIngredient1: 'Light rum', 
strIngredient2: 'Lime', 
strIngredient3: 'Sugar', 
strIngredient4: 'Mint', 
strIngredient5: 'Soda water'}

{strMeasure1: '2-3 oz ', 
strMeasure2: 'Juice of 1 ', 
strMeasure3: '2 tsp ', 
strMeasure4: '2-4 '}

我希望最终的对象数组如下所示:

代码语言:javascript
复制
[
   {ingredient: 'Light rum', measure: '2-3 oz'},
   {ingredient: 'Lime', measure: 'Juice of 1'},
   etc... (if no measure, fill with empty string)
]

我尝试根据键和值将对象解析为两个数组,然后遍历两个数组并根据键中的数字输出值,但是必须有一种更有效的方法来获得所需的结果。有什么建议吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-24 15:44:29

您可以循环遍历create对象的键,并通过分割成分号并为该数字寻找相应的度量来创建所需的数组。

代码语言:javascript
复制
const 
  ingredients = { strIngredient1: "Light rum", strIngredient2: "Lime", strIngredient3: "Sugar", strIngredient4: "Mint", strIngredient5: "Soda water" },
  measurements = { strMeasure1: "2-3 oz", strMeasure2: "Juice of 1", strMeasure3: "2 tsp", strMeasure4: "2-4" },
  result = Object.keys(ingredients).map((k) => ({
    ingredient: ingredients[k],
    measure: measurements[`strMeasure${k.slice(13)}`] ?? "",
  }));

console.log(result);

票数 1
EN

Stack Overflow用户

发布于 2022-06-24 15:57:18

您可以分离密钥并构建一个新对象。

代码语言:javascript
复制
const
    data = [{ strIngredient1: 'Light rum', strIngredient2: 'Lime', strIngredient3: 'Sugar', strIngredient4: 'Mint', strIngredient5: 'Soda water' }, { strMeasure1: '2-3 oz ', strMeasure2: 'Juice of 1 ', strMeasure3: '2 tsp ', strMeasure4: '2-4 ' }],
    keys = { strIngredient: 'ingredient', strMeasure: 'measure' },
    result = data.reduce((r, o, i) => {
        Object.entries(o).forEach(([key, value]) => {
            const [, k, i] = key.match(/^(.*?)(\d+)$/);
            (r[i - 1] ??= { ingredient: '', measure: '' })[keys[k]] = value;
        });
        return r;        
    }, []);

console.log(result);

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72746398

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档