ES10-flat 兼容性处理(附代码 无脑cv)

Posted 前端呆头鹅

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ES10-flat 兼容性处理(附代码 无脑cv)相关的知识,希望对你有一定的参考价值。

环境vue - cli

介绍:flat是es10中的数组打平函数,可传入一个参数,该参数为数组打平的深度,该参数可省略,默认为1。

var arr = [1,[1,[2]],[{},[3],4],[[[5]]]];
var arr2 = arr1.flat(); // === var arr2 = arr1.flat(1);
console.log(arr2); // [1,1,[2],{},[3],4,[[5]]]

背景:最近接手的项目中出现了部分低版本浏览器报错的问题。

报错内容flat is not a function

解决过程

将Array.prototype打印,里面果然没有方法flat。

经查询,vue3脚手架中绑定的babel对代码兼容性的处理使用core.js@2,而对flat的支持在core.js@3中才出现,根据网友的提示,在vue3中手动升级core.js的版本也不太好使(有坑)。所以这里将方法flat代码实现后添加到Array.prototype中即可。

操作流程

添加文件babelAdd.js,放置兼容性代码。

(function ArrayAdd(){
	if(Array.prototype.flat instanceof Function) {
		console.log('Array.protype.flat IS Exist')
	}else {
		Array.prototype.flat = function(i = 1){
			var RES = [];
			var ii = 0;
			(function f(arr, ii){
				var arr = JSON.parse(JSON.stringfy(arr));
				for(let j = 0; j < arr.length; j++){
					if(Array.isArray(arr[j]) && ii < i){
						f(arr[j], ii+1);
					}else {
						RES.push(arr[j]);
					}
				}
			})(this, 0);
			return RES;
		}
	}	
})()

在main.js中引入该文件babelAdd.js。

import './babelAdd'

这样就好了,只需要两步就解决该问题了。

以上是关于ES10-flat 兼容性处理(附代码 无脑cv)的主要内容,如果未能解决你的问题,请参考以下文章

一文助你解决90%的自然语言处理问题(附代码)

详解OpenCV的函数cv::add(),并附各种情况的示例代码和运行结果

天池赛题解析:零基础入门语义分割-地表建筑物识别-CV语义分割实战(附部分代码)

javascript ES3方法IE兼容性处理

使用axios对安卓或者ios低版本兼容性处理

ES6 可能出现的兼容问题及处理方法