首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >ES6 : mailchimp api的对象重构

ES6 : mailchimp api的对象重构
EN

Stack Overflow用户
提问于 2019-03-06 08:58:06
回答 1查看 42关注 0票数 0

我想在数组和另一个对象的基础上构造一个对象。

目标是将我的用户兴趣发送到mailchimp api,为此,我得到了:

代码语言:javascript
运行
复制
//Array of skills for one user    
const skillsUser1 = ["SKILL1", "SKILL3"]

//List of all my skills match to mailchimp interest group
const skillsMailchimpId = {
  'SKILL1': 'list_id_1',
  'SKILL2': 'list_id_2',
  'SKILL3': 'list_id_3',
}

//Mapping of user skill to all skills
const outputSkills = skillsUser1.map((skill) => skillsMailchimpId[skill]);
console.log(outputSkills);

问题是之后,outputSkill给我一个数组:

代码语言:javascript
运行
复制
["ID1", "ID3"]

但是mailchimp api need,所以我需要的是::

代码语言:javascript
运行
复制
{ "list_id_1": true,
  "list_id_2": false, //or empty
  "list_id_3" : true
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-03-06 09:27:38

一种简单的方法是这样(参见代码中的注释以获得解释):

代码语言:javascript
运行
复制
// Array of skills for one user    
const skillsUser1 = ["SKILL1", "SKILL3"]

// List of all my skills match to mailchimp interest group
const skillsMailchimpId = {
  'SKILL1': 'list_id_1',
  'SKILL2': 'list_id_2',
  'SKILL3': 'list_id_3',
}

// Create an output object
const outputSkills = {};

// Use `Object.entries` to transform `skillsMailchimpId` to array
Object.entries(skillsMailchimpId)
  // Use `.forEach` to add properties to `outputSkills`
  .forEach(keyValuePair => {
    const [key, val] = keyValuePair;
    outputSkills[val] = skillsUser1.includes(key);
  });

console.log(outputSkills);

基本思想是在skillsMailchimpId上循环而不是在skillsUser上循环。

但这并不是非常动态的。对于您的生产代码,您可能希望对其进行重构以使其更加灵活。

代码语言:javascript
运行
复制
// Array of skills for one user    
const skillsUser1 = ["SKILL1", "SKILL3"]

// List of all my skills match to mailchimp interest group
const skillsMailchimpId = {
  'SKILL1': 'list_id_1',
  'SKILL2': 'list_id_2',
  'SKILL3': 'list_id_3',
}

// Use `Object.entries` to transform `skillsMailchimpId` to array
const skillsMailchimpIdEntries = Object.entries(skillsMailchimpId);

const parseUserSkills = userSkills => {
  // Create an output object
  const outputSkills = {};
  
  // Use `.forEach` to add properties to `outputSkills`
  skillsMailchimpIdEntries.forEach(([key, val]) => {
    outputSkills[val] = userSkills.includes(key);
  });
  
  return outputSkills;
}

// Now you can use the function with any user
console.log(parseUserSkills(skillsUser1));

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

https://stackoverflow.com/questions/55013909

复制
相关文章

相似问题

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