Я пытаюсь преобразовать функцию 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
khaidem 23 Июл 2020 в 12:58

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]
    ];
2
julemand101 23 Июл 2020 в 10:58