Я пытаюсь преобразовать функцию Javascript в функцию дротика. Итак, вот несколько ошибок, которые я получаю
Error compiling to JavaScript:
main.dart:10:9:
Error: Expected an identifier, but got 'var'.
var i = y.indexOf(x);
^^^
main.dart:10:9:
Error: Expected '}' before this.
var i = y.indexOf(x);
^^^
Error: Compilation failed.
Я не могу понять, что не так с синтаксисом. Если вы поможете мне с каждым методом, я смогу понять и остальные методы дротика.
Вот код:
void main() {
print(commonChars(["bella","label","roller"]));
}
commonChars(array){
var arr = array.map((x) => [...x]);
var firstObject = arr.shift();
return firstObject.filter((x) =>
arr.every((y) => {
var i = y.indexOf(x);
if (i >= 0) {
return (y[i] = true);
}
})
);
}
Результатом этого кода должно быть ["e", "l", "l"].
Заранее спасибо.
1 ответ
Ваш собственный пример не соответствует основным из отсутствующих типов (например, вам не хватает возвращаемого типа метода).
Трудно напрямую перевести код JavaScript в Dart, поскольку буквы в Dart нелегко повторять. Но я переписал ваш код так, чтобы он работал:
void main() {
print(commonChars(["bella", "label", "roller"])); // [e, l, l]
}
List<String> commonChars(List<String> arrays) {
final firstString = arrays.first;
final result = <String>[];
for (var i = 0; i < firstString.length; i++) {
final letter = firstString[i];
if (arrays.skip(1).every((string) => string.contains(letter))) {
result.add(letter);
}
}
return result;
}
А если вы хотите сделать его по-настоящему компактным, вы можете сделать что-то вроде этого:
void main() {
print(commonChars(["bella", "label", "roller"])); // [e, l, l]
}
List<String> commonChars(List<String> arrays) => [
for (var i = 0; i < arrays.first.length; i++)
if (arrays.skip(1).every((string) => string.contains(arrays.first[i])))
arrays.first[i]
];
Похожие вопросы
Новые вопросы
arrays
Массив - это упорядоченная линейная структура данных, состоящая из набора элементов (значений, переменных или ссылок), каждый из которых идентифицируется одним или несколькими индексами. Когда вы спрашиваете о конкретных вариантах массивов, используйте вместо них следующие связанные теги: [vector], [arraylist], [matrix]. При использовании этого тега в вопросе, относящемся к языку программирования, пометьте вопрос используемым языком программирования.