/**

 \* 请在以下答题区 TODO 注释部分完成代码编写。

 \* 请仔细阅读 example 和单元测试,这将帮助你更好地理解题目

 \* 


 \* 要求:

 \* 1. 命名规范

 \* 2. 代码格式规范

 \* 3. 跑通所有单元测试

 */





///////////答题区///////////



/**

 \* 将集合进行压缩,第一行保存列名,后面的每一行仅保存相应的值

 \* 

 \* @example

 \* 将集合

 \* [

 \*   {

 \*     name: 'zhangsan',

 \*     age: 20,

 \*     sex: 'male'

 \*   },

 \*   {

 \*     name: 'lisi',

 \*     age: 19,

 \*     sex: 'female'

 \* 

 \*   },

 \*   {

 \*     name: 'wangwu',

 \*     age: 23,

 \*     sex: 'male'

 \* 

 \*   }

 \* ]

 \* 转换成

 \* [

 \*   ['name', 'age', 'sex'],

 \*   ['zhangsan', 20, 'male'],

 \*   ['lisi', 19, 'female'],

 \*   ['wangwu', 23, 'male']

 \* ]

 \* @param {Array<object>} collection 待压缩的集合

 \* @return {Array<Array<any>>} 压缩后的集合

 */

function compress(collection = []) {

  // TODO: 请你在此处编写代码,其他任何地方都无需修改

  let keys = Object.keys(collection[0]) // 保存数组的 第一项 也就是keys

  let result = [keys]

  collection.forEach(item => {

​    result.push(keys.map(key => item[key]))

  })

  return result;

}


///////////单元测试///////////

const assert = require('assert');



// 测试用例1

const result1 = compress([

  { name: 'zs', sex: 'm', age: 10 },

  { name: 'ls', sex: 'f', age: 18 },

  { name: 'ww', sex: 'm', age: 17 },

]);



assert.equal(result1.length, 4);

assert.equal(result1[0].length, 3);

assert.deepEqual(result1[0], ['name', 'sex', 'age']);

assert.deepEqual(result1[1], ['zs', 'm', 10]);

assert.deepEqual(result1[3], ['ww', 'm', 17]);



console.log('测试用例1已通过!');



// 测试用例2

const result2 = compress([

  { name: 'zs', sex: 'm', age: 10 },

  { name: 'ls', age: 18, sex: 'f' },

  { name: 'ww', age: 17, sex: 'm' },

]);



assert.equal(result2.length, 4);

assert.equal(result2[0].length, 3);

assert.deepEqual(result2[0], ['name', 'sex', 'age']);

assert.deepEqual(result2[1], ['zs', 'm', 10]);

assert.deepEqual(result2[2], ['ls', 'f', 18]);

assert.deepEqual(result2[3], ['ww', 'm', 17]);



console.log('测试用例2已通过!');



// 测试用例3

const result3 = compress([

  { x1: 1, x2: 2, x3: 3, x4: 4, x5: 5, x6: 6, x7: 7, x8: 8, x9: 9 }

]);



assert.equal(result3.length, 2);

assert.equal(result3[0].length, 9);

assert.deepEqual(result3[0], ['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x7', 'x8', 'x9']);

assert.deepEqual(result3[1], [1, 2, 3, 4, 5, 6, 7, 8, 9]);



console.log('测试用例3已通过!');




console.log('恭喜,所有单元测试已通过!');
Last modification:February 13, 2023
如果觉得我的文章对你有用,请随意赞赏