【问题标题】:Refactor JS array in the specific format the backend is expecting以后端期望的特定格式重构 JS 数组
【发布时间】:2018-05-18 02:49:37
【问题描述】:

当用户提交表单时,我有这个数组:

leaders: [
    {
        email: 'name@domain.io',
        sites: [
            {
                name: 'Test',
                sitemeta_id: 'xxxxxxxxx',
                _checked: true
            },
            {
                name: 'Test 2',
                sitemeta_id: 'xxxxxxxx',
                _checked: true
            }
        ],
        focused: false,
        _sitesChecked: 1
    },
    {
        email: 'dog@gmail.com',
        sites: [
            {
                name: 'Some Name',
                sitemeta_id: 'xxxxx',
                _checked: true
            },
            {
                name: 'Names',
                sitemeta_id: 'xxxxxxxx'
            }
        ],
        focused: false,
        _sitesChecked: 2
    }
]

我想对其进行重构,以后端期望的特定格式发送此数组,该格式仅包含值为 _checked 为 true 的站点名称,因此不会包含站点“名称”,例如:

leaders: [
    {
        email: 'name@domain.io',
        sites: ['Test', 'Test2']
    },
    {
        email: 'dog@gmail.com',
        sites: ['Some Name']
    }
]

在 JS(或 AngularJS)中实现这一目标的最佳方法是什么?

【问题讨论】:

    标签: javascript arrays angularjs data-structures


    【解决方案1】:

    您可以使用.map 将一个数组转换为另一个数组,并解构参数以减少语法噪音:

    const leaders = [{email:'name@domain.io',sites:[{name:'Test',sitemeta_id:'xxxxxxxxx',_checked:!0},{name:'Test 2',sitemeta_id:'xxxxxxxx'}],focused:!1,_sitesChecked:1},{email:'dog@gmail.com',sites:[{name:'Some Name',sitemeta_id:'xxxxx',_checked:!0},{name:'Names',sitemeta_id:'xxxxxxxx',_checked:!0}],focused:!1,_sitesChecked:2}];
    
    const output = leaders.map(
      ({ email, sites }) => ({
        email,
        sites: sites.reduce(
          (accum, { name, _checked }) => _checked ? [...accum, name] : accum,
          []
        )
      })
    );
    console.log(output);

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-15
      • 2020-09-22
      • 1970-01-01
      • 2014-12-15
      • 1970-01-01
      • 2010-09-18
      • 1970-01-01
      相关资源
      最近更新 更多