Плоская функция JavaScript Array не определяется в React native

Я пишу приложение на основе react-native, и мы точно знаем, что можем использовать коды JavaScript в этом проекте и во всех проектах react.

Но когда я использую приведенный ниже код, транспилятор возвращает Ошибка симулятору:

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

Ошибка: квартира не функция

Почему в react-native нет определения, а в браузере работает хорошо?

возможно, это не реализовано в пользовательском агенте.

Nina Scholz 18.10.2018 09:23

@NinaScholz, спасибо, но какой пользовательский агент?

user10516706 18.10.2018 09:26

может где транспилер работает ...?

Nina Scholz 18.10.2018 09:34
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
11
3
3 503
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

вместо arr.flat попробуйте использовать эту функцию

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

flatten(arr)

Собственно мой точный вопрос - не функция. Я сказал ПОЧЕМУ. С другой стороны, ваш ответ неверен, потому что это ровный первый этаж глубиной. Я знаю, как писать это рекурсивно, и я использовал функцию reduceJavaScript, но я хочу, ПОЧЕМУ FLAT ТАМ НЕ РАБОТАЕТ?

user10516706 18.10.2018 09:23

ой в таком случае откройте ссылку ниже проверьте комментарии stackoverflow.com/questions/52283892/…

Atishay Jain 18.10.2018 09:24

Поддерживается ли это на вашей платформе? Array.prototype.flat

Link также содержит реализации, использующие сокращение и concat, а также нерекурсивные.

Пожалуйста, проверьте сообщение OP: Почему в браузере хорошо работает

KarelG 18.10.2018 09:34

проверьте, пожалуйста, мой вопрос, последнее предложение, я сказал, почему он не определен в react-native?

user10516706 18.10.2018 09:37

Ну, это обычная функция массива, которая не везде реализована. Это вообще не реагирует на родной язык, это простой javascript. И я предполагаю, что ваш собственный ответ выполняется на платформе, где он не поддерживается?

JGoodgive 18.10.2018 09:43

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

The error is: flat is not function

Why in react-native it 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.

user10516706 18.10.2018 12:06
Ответ принят как подходящий

React Native использует движок JavaScriptCore, который использует спецификацию ECMA-262. Спецификация ясно показывает, что .плоский не поддерживается и не включен в список преобразований для babel.

Напишите свой собственный или установите одну из множества прокладок, доступных на npm.

О, реально спасибо за ваше разъяснение. Я написал свою на основе функции reduce и Array concat. Но я хотел знать, почему он не поддерживает, спасибо.

user10516706 19.10.2018 15:24

Другие вопросы по теме