如何编写一个函数来接收一个值数组,并返回一个对象 JavaScript?


比如,我们需要写一个函数 classifyArray(),输入一个包含混合数据类型的数组,并返回一个 Map(),其中元素按其数据类型分组。

例如−

// if the input array is:
const arr = ['class', 2, [7, 8, 9], {"name": "Michael"}, Symbol('foo'),
true, false, 'name', 6];
// then the output Map should be:
Map(5) {
   'string' => [ 'class', 'name' ],
   'number' => [ 2, 6 ],
   'object' => [ [ 7, 8, 9 ], { name: 'Michael' } ],
   'symbol' => [ Symbol(foo) ],
   'boolean' => [ true, false ]
}

现在,让我们编写此函数的代码 −

示例

const arr = ['class', 2, [7, 8, 9], {"name": "Michael"}, Symbol('foo'),
true, false, 'name', 6];
const classifyArray = arr => {
   return arr.reduce((acc, val) => {
      const previousData = acc.get(typeof val);
      if(previousData){
         acc.set(typeof val, [...previousData, val]);
      }else{
         acc.set(typeof val, [val]);
      };
      return acc;
   }, new Map());
};
console.log(classifyArray(arr));

输出

控制台中的输出将是 −

Map(5) {
   'string' => [ 'class', 'name' ],
   'number' => [ 2, 6 ],
   'object' => [ [ 7, 8, 9 ], { name: 'Michael' } ],
   'symbol' => [ Symbol(foo) ],
   'boolean' => [ true, false ]
}

更新于:26-8-2020

512 次浏览

开启你的 职业生涯

通过完成课程获得认证

立即开始
广告
© . All rights reserved.