繁体   English   中英

如何将对象数组分配给 object?

[英]How to assign an array of objects to an object?

我有以下 object 和对象数组,后者是服务器数组,第一个是参考 object,我想用它从主数组中获取我想要的值,并了解如何将数组整合到 ZA8CFDE6331149EB2AC96FCB98 ? 我尝试使用 Object.assign 但没有运气。

 const obj1 = { day1: ['cake', 'muffin'], day2: ['grapes']}; const arrObj2: = [{name: 'cake', group 'dessert'},{name: 'muffin', group 'dessert'},{name: 'grapes', group 'vegs'}] // Expected results const newObject = //{ // day1: [{name: 'cake', group 'dessert'},{name: 'muffin', group 'dessert'}] //, day2: [{name: 'grapes', group 'vegs'}] //};

您应该通过obj1中的所有条目[key, value]使用.reduce到 map,然后从arrObj2中过滤项目,其中name在您的value数组中

const newObject = Object.entries(obj1).reduce((p, [key, value]) => ({
  ...p,
  [key]: arrObj2.filter(f => value.includes(f.name))
}), {})

您可以使用.filter()

 const obj1 = { day1: ['cake', 'muffin'], day2: ['grapes']}; const arrObj2 = [{name: 'cake', group: 'dessert'},{name: 'muffin', group: 'dessert'},{name: 'grapes', group: 'vegs'}]; // Expected results const newObj = { day1: arrObj2.filter((el) => obj1.day1.includes(el.name)), day2: arrObj2.filter((el) => obj1.day2.includes(el.name)) }; console.log(newObj);

您的代码不是有效的 Javascript。 变量名后不应有冒号。 我建议您学习编程中的变量和循环。

但是对于您的答案,只需遍历数据并替换值:

for(var day in obj1) 
    for(var i=0; i<obj1[day].length; i++) 
        for(var j=0; j<arrObj2.length; j++) 
            if(obj1[day][i]==arrObj2[j].name) obj1[day][i]=arrObj2[j];

我认为您应该将“arrObj2”表示为 object(字符串到字符串映射)。

var GroupMap = {"cake":"dessert","muffin":"desert","grapes":"vegs"};

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM