js中有没有类似array_column的函数
时间: 2024-05-01 17:21:41 浏览: 9
JavaScript中没有直接提供类似PHP中的array_column函数的原生函数。但是可以通过一些方法来实现类似的功能。例如,可以通过map方法和箭头函数来实现:
```javascript
const data = [
{id: 1, name: 'Alice'},
{id: 2, name: 'Bob'},
{id: 3, name: 'Charlie'}
];
const names = data.map(item => item.name);
console.log(names); // ["Alice", "Bob", "Charlie"]
```
这段代码通过map方法将data数组中每个对象的name属性提取出来,生成一个新的数组names。这样就实现了类似array_column函数的功能。
相关问题
el-table中选择某两列进行下载的实现方法
要实现在el-table中选择某两列进行下载,可以按照以下步骤进行操作:
1. 首先,在el-table中设置需要下载的两列的属性,例如:
```
<el-table :data="tableData">
<el-table-column prop="column1" label="列1"></el-table-column>
<el-table-column prop="column2" label="列2"></el-table-column>
<el-table-column prop="column3" label="列3"></el-table-column>
<el-table-column prop="column4" label="列4"></el-table-column>
</el-table>
```
2. 在页面中添加一个下载按钮,并绑定一个方法,例如:
```
<el-button @click="download()">下载</el-button>
```
3. 在download()方法中,使用FileSaver.js库和xlsx.js库来生成并下载Excel文件。具体实现代码如下所示:
```
import * as FileSaver from 'file-saver';
import * as XLSX from 'xlsx';
methods: {
download() {
// 获取需要下载的数据
const data = this.tableData.map(item => {
return {
column1: item.column1,
column2: item.column2
}
})
// 创建一个工作簿
const workbook = XLSX.utils.book_new();
// 创建一个工作表
const worksheet = XLSX.utils.json_to_sheet(data);
// 将工作表添加到工作簿中
XLSX.utils.book_append_sheet(workbook, worksheet, 'Sheet1');
// 将工作簿转换为二进制数据
const wbout = XLSX.write(workbook, {bookType:'xlsx', type:'binary'});
// 创建一个Blob对象并保存文件
const blob = new Blob([s2ab(wbout)], {type:"application/octet-stream"});
FileSaver.saveAs(blob, "download.xlsx");
}
}
function s2ab(s) {
const buf = new ArrayBuffer(s.length);
const view = new Uint8Array(buf);
for (let i=0; i<s.length; i++) {
view[i] = s.charCodeAt(i) & 0xFF;
}
return buf;
}
```
在上面的代码中,我们首先获取需要下载的数据,并将其转换为工作表。然后,将工作表添加到工作簿中,并将工作簿转换为二进制数据。最后,创建一个Blob对象,并使用FileSaver.js库保存文件。
需要注意的是,在下载Excel文件之前,我们需要将工作簿转换为二进制数据,这里使用了一个名为s2ab的函数来实现。
<template> <div> <el-button type="primary" @click="exportExcel">导出Excel</el-button> <el-table :data="tableData" ref="table" style="width: 100%"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="gender" label="性别"></el-table-column> </el-table> </div> </template> <script> import { export_json_to_excel } from "@/utils/excel.js"; // 引入excel.js文件 export default { data() { return { tableData: [ { name: "张三", age: 20, gender: "男" }, { name: "李四", age: 25, gender: "女" }, { name: "王五", age: 30, gender: "男" } ] }; }, methods: { exportExcel() { const tHeader = ["姓名", "年龄", "性别"]; // 表头 const filterVal = ["name", "age", "gender"]; // 对应数据中的字段名 const list = this.tableData.map(item => { return { name: item.name, age: item.age, gender: item.gender }; }); // 将表格数据转化为要导出的数据 export_json_to_excel(tHeader, list, "表格数据"); // 导出Excel } } }; </script>写出里面execle.js文件的代码
很抱歉,我无法提供 `excel.js` 文件的代码,因为 `excel.js` 不是一个标准的 JavaScript 库或者框架。可能需要根据具体需求,自己编写或者选择一个合适的库来完成数据导出的功能。不过,可以根据代码中的引用,猜测 `excel.js` 应该是一个自定义的工具类文件,其中可能包含了导出 Excel 文件的相关函数。以下是一个简单的示例代码,用于实现将 JSON 数组导出为 Excel 文件的功能:
```javascript
import XLSX from 'xlsx';
export function export_json_to_excel(headers, data, filename) {
const worksheet = XLSX.utils.json_to_sheet(data);
const workbook = {
Sheets: { data: worksheet },
SheetNames: ['data']
};
const excelBuffer = XLSX.write(workbook, { bookType: 'xlsx', type: 'array' });
saveAsExcel(excelBuffer, filename);
}
function saveAsExcel(buffer, filename) {
const blob = new Blob([buffer], { type: 'application/octet-stream' });
const link = document.createElement('a');
link.href = window.URL.createObjectURL(blob);
link.download = `${filename}.xlsx`;
link.click();
}
```
以上代码使用了 `xlsx` 库来实现生成 Excel 文件的功能,其中 `export_json_to_excel` 函数接受表头、数据和文件名参数,将数据转换为工作表并生成 Excel 文件,最终调用 `saveAsExcel` 函数将文件保存到本地磁盘。