一、ES6的数组方法有哪些?
- map() - 用于创建一个新数组,该数组的元素是原始数组的每个元素调用函数的结果。
- filter() - 用于创建一个新数组,其中包含所有通过测试的元素。
- reduce() - 用于通过应用函数累加器来将数组的所有元素减少为单个值。
- find() - 用于返回数组中满足条件的第一个元素。
- findIndex() - 用于返回数组中满足条件的第一个元素的索引。
- some() - 用于检查数组中是否有元素满足条件。
- every() - 用于检查数组中的所有元素是否满足条件。
- includes() - 用于检查数组中是否包含特定元素。
- flat() - 用于将嵌套的数组展平成一个新数组。
- flatMap() - 用于在一个步骤中映射和展平数组。
二、map和foreach的区别
map()和forEach()都是JavaScript中常用的数组方法,但它们的作用略有不同。
map():创建一个新数组,其中的每个元素都是原始数组元素应用所提供函数的结果。也就是说,map()方法会对原数组中的每个元素都执行相同的操作,然后返回一个新的数组,而原始数组不会被改变。forEach():对数组中的每个元素执行给定的函数。与map()方法不同,forEach()不会返回新的数组,而是对原数组进行迭代并执行给定的函数。在forEach()中可以对原数组进行修改。
因此,如果你需要对数组进行映射操作,可以使用map()方法,如果你只需要对数组中的每个元素执行一个操作,可以使用forEach()方法。如果你需要同时对原始数组进行修改并返回新数组,则应该使用map()方法。
三、一般项目中的axios是怎么封装的,用到了axios的哪些方法?
一般来说,封装axios包括以下步骤:
- 创建axios实例:使用
axios.create()方法创建一个axios实例,并设置通用的配置参数,例如基本的URL、请求头等等。 - 请求拦截器:在axios实例中使用
interceptors.request.use()方法创建一个请求拦截器,可以在请求发送之前进行一些操作,例如添加公共请求头、添加token等等。 - 响应拦截器:在axios实例中使用
interceptors.response.use()方法创建一个响应拦截器,可以在接收到响应之后进行一些操作,例如统一处理错误信息、进行数据处理等等。 - 封装请求方法:根据项目需要封装相应的请求方法,例如GET、POST、PUT、DELETE等等,并在方法中调用axios实例中的对应方法。
- 统一处理错误:在封装请求方法的过程中,可以通过try...catch语句来捕获请求错误,并统一处理错误信息。
常用到的axios方法包括:
axios.get():用于发送GET请求。axios.post():用于发送POST请求。axios.put():用于发送PUT请求。axios.delete():用于发送DELETE请求。axios.interceptors.request.use():用于创建请求拦截器。axios.interceptors.response.use():用于创建响应拦截器。axios.create():用于创建axios实例。axios.defaults:用于设置默认的配置参数,例如基本的URL、请求头等等。
通过以上的封装,可以让开发人员更加方便地使用axios,并且可以避免重复的代码,提高代码复用性。
以下是代码示例:
`import axios from 'axios';
// 创建axios实例 const instance = axios.create({ baseURL: 'api.example.com', timeout: 5000, headers: { 'Content-Type': 'application/json', }, });
// 请求拦截器
instance.interceptors.request.use(
config => {
// 给请求头添加token等信息
const token = localStorage.getItem('token');
if (token) {
config.headers['Authorization'] = Bearer ${token};
}
return config;
},
error => {
return Promise.reject(error);
}
);
// 响应拦截器 instance.interceptors.response.use( response => { // 处理响应数据 if (response.status === 200) { return response.data; } else { return Promise.reject(response.data); } }, error => { // 统一处理请求错误 if (error.response) { console.log(error.response.data); console.log(error.response.status); console.log(error.response.headers); } else if (error.request) { console.log(error.request); } else { console.log('Error', error.message); } console.log(error.config); return Promise.reject(error); } );
// 封装GET请求方法 export const get = (url, params = {}) => { return instance.get(url, { params }); };
// 封装POST请求方法 export const post = (url, data = {}) => { return instance.post(url, data); }; `