需求:all=[{aa:'123',bb:'456',cc:'789',dd:'abc'},{aa:'b123',bb:'b456',cc:'b789',dd:'babc'},{aa:'c123',bb:'c456',cc:'c789',dd:'cabc'},{aa:'d123',bb:'d456',cc:'d789',dd:'dabc'}] 请将all这个数组使用js进行处理,取all数组的第0条数据中的key,放到一个数组header里面。再将all这个数组里面的每一条对象的的值取出来放到另一个新数组里面,记住,没一条对象的值都要放到一个新数组里面,这意味着会有多个新数组。之后将header和其它的新数组按照顺序方法另一个数组里面,变成一个二维数组
var all = [
{ aa: '123', bb: '456', cc: '789', dd: 'abc' },
{ aa: 'b123', bb: 'b456', cc: 'b789', dd: 'babc' },
{ aa: 'c123', bb: 'c456', cc: 'c789', dd: 'cabc' },
{ aa: 'd123', bb: 'd456', cc: 'd789', dd: 'dabc' }
];
// 取all数组的第0条数据中的key,放到一个数组header里面
var header = Object.keys(all[0]);
// 将all数组里面的每一条对象的值取出来放到另一个新数组里面
var newDataArrays = all.map(function(item) {
return Object.values(item);
});
// 将header和其它的新数组按照顺序放到一个二维数组里面
var result = [header].concat(newDataArrays);
console.log(result);
使用js将上面方法封装为公共方法
/**
* 处理对象数组,提取键作为表头,提取值作为数据。
* @param {Array} all - 输入的对象数组。
* @returns {Array} - 包含表头和数据的二维数组。
*/
function processArray(all) {
if (all.length === 0) {
throw new Error("输入数组为空");
}
// 提取第一个对象的键作为表头
const header = Object.keys(all[0]);
// 提取每个对象的值作为数据
const newDataArrays = all.map(item => Object.values(item));
// 构建包含表头和数据的二维数组
const result = [header, ...newDataArrays];
return result;
}
// 示例用法
const all = [
{ aa: '123', bb: '456', cc: '789', dd: 'abc' },
{ aa: 'b123', bb: 'b456', cc: 'b789', dd: 'babc' },
{ aa: 'c123', bb: 'c456', cc: 'c789', dd: 'cabc' },
{ aa: 'd123', bb: 'd456', cc: 'd789', dd: 'dabc' }
];
const result = processArray(all);
console.log(result);
使用TS将上面方法封装为公共方法
interface DataObject {
[key: string]: string;
}
function processArray(all: DataObject[]): any[][] {
if (all.length === 0) {
throw new Error("Input array is empty");
}
const header: string[] = Object.keys(all[0]);
const newDataArrays: string[][] = all.map(item => Object.values(item));
const result: any[][] = [header, ...newDataArrays];
return result;
}
// 示例用法
const all: DataObject[] = [
{ aa: '123', bb: '456', cc: '789', dd: 'abc' },
{ aa: 'b123', bb: 'b456', cc: 'b789', dd: 'babc' },
{ aa: 'c123', bb: 'c456', cc: 'c789', dd: 'cabc' },
{ aa: 'd123', bb: 'd456', cc: 'd789', dd: 'dabc' }
];
const result: any[][] = processArray(all);
console.log(result);
将数组处理成这样后,再结合xlsx库,便可将数据导出为Excel表格,具体参考纯前端导出表格_前端导出excel-CSDN博客