Я пишу приложение на основе react-native, и мы точно знаем, что можем использовать коды JavaScript в этом проекте и во всех проектах react.
Но когда я использую приведенный ниже код, транспилятор возвращает Ошибка симулятору:
const mixer = (...arg) => arg.flat(9);
Ошибка: квартира не функция
Почему в react-native нет определения, а в браузере работает хорошо?
@NinaScholz, спасибо, но какой пользовательский агент?
может где транспилер работает ...?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вместо arr.flat попробуйте использовать эту функцию
function flatten(arr) {
return Array.prototype.concat(...arr);
}
flatten(arr)
Собственно мой точный вопрос - не функция. Я сказал ПОЧЕМУ. С другой стороны, ваш ответ неверен, потому что это ровный первый этаж глубиной. Я знаю, как писать это рекурсивно, и я использовал функцию reduceJavaScript, но я хочу, ПОЧЕМУ FLAT ТАМ НЕ РАБОТАЕТ?
ой в таком случае откройте ссылку ниже проверьте комментарии stackoverflow.com/questions/52283892/…
Поддерживается ли это на вашей платформе? Array.prototype.flat
Link также содержит реализации, использующие сокращение и concat, а также нерекурсивные.
Пожалуйста, проверьте сообщение OP: Почему в браузере хорошо работает
проверьте, пожалуйста, мой вопрос, последнее предложение, я сказал, почему он не определен в react-native?
Ну, это обычная функция массива, которая не везде реализована. Это вообще не реагирует на родной язык, это простой javascript. И я предполагаю, что ваш собственный ответ выполняется на платформе, где он не поддерживается?
const mixer = (...arg) => arg.flat(9);The error is: flat is not function
Why in
react-nativeit is not define but in browser works well?
Мое первое предположение состоит в том, что транспилятор react-native неправильно интерпретирует ваш ...arg, что приводит к объекту, не относящемуся к типу Array. Вы пытаетесь вызвать в .flat, который является частью Array.prototype. Поскольку arg не может быть типа Array, он не может найти .flat, что приводит к этой ошибке.
Хотя я не уверен. Вы можете проверить тип объекта? Вы можете временно использовать этот код ниже.
const mixer = (...arg) => { console.info(typeof arg); return []; }
Что там написано? Если там написано Array, значит, вы можете работать на платформе, которая еще не поддерживает эту функцию. Здесь вашу проблему может решить использование полифилла.
транспилятор react-native интерпретировал ...arg, он не может понять, что такое flat.
React Native использует движок JavaScriptCore, который использует спецификацию ECMA-262. Спецификация ясно показывает, что .плоский не поддерживается и не включен в список преобразований для babel.
Напишите свой собственный или установите одну из множества прокладок, доступных на npm.
О, реально спасибо за ваше разъяснение. Я написал свою на основе функции reduce и Array concat. Но я хотел знать, почему он не поддерживает, спасибо.
возможно, это не реализовано в пользовательском агенте.