JavaScript Array Flat函数未在React本机中定义

时间:2018-10-18 06:42:53

标签: javascript arrays react-native

我正在基于react-native编写应用程序,我们知道我们可以在该项目和所有JavaScript项目中使用react代码。

但是当我使用下面的代码时,编译器将 Error 返回给模拟器:

const mixer = (...arg) => arg.flat(9);

错误是: flat不起作用

为什么在react-native中没有定义它,但是在浏览器中运行良好?

4 个答案:

答案 0 :(得分:1)

React Native使用JavaScriptCore引擎,该引擎使用ECMA-262规范。该规范清楚地表明.flat不被支持,并且不包含在babel的转换列表中。

自己编写或安装npm上可用的众多垫片之一。

答案 1 :(得分:0)

代替arr.flat尝试使用此功能

function flatten(arr) {
    return Array.prototype.concat(...arr);
}

flatten(arr)

答案 2 :(得分:0)

您的平台支持它吗? Array.prototype.flat

链接还包含使用reduce和concat以及非递归的实现。

答案 3 :(得分:0)

  

const mixer = (...arg) => arg.flat(9);

     

错误是: flat不起作用

     

为什么在react-native中没有定义它,但是在浏览器中运行良好?

我的第一个猜测是react-native编译器无法正确解释您的...arg,从而导致对象不是Array类型。您正在尝试呼叫.flat的一部分Array.prototype。由于arg的类型不能为Array,因此无法找到.flat,从而导致该错误。

我不确定。您可以检查对象类型吗?您可以在下面临时在此处使用此代码。

const mixer = (...arg) => { console.log(typeof arg); return []; }

说什么?如果显示Array,则您可能在尚不支持该功能的平台上运行。使用polyfill可以在这里解决您的问题。