【问题标题】:Uncaught Error: TypeError: 21: type 'JSInt' is not a subtype of type 'bool' dart未捕获的错误:TypeError:21:类型 'JSInt' 不是类型 'bool' dart 的子类型
【发布时间】:2021-11-09 12:39:04
【问题描述】:
  • 我写了一个函数,它接受两个数组作为参数,函数合并数组,试图打印合并的列表,但我有错误 未捕获的错误:TypeError: 21: type 'JSInt' is not a subtype 'bool' 类型并试图让函数返回列表并在另一个函数中打印它,但我仍然有同样的错误,我认为错误是因为函数返回类型,但我尝试将其作为 void 和是的,我知道 void 不起作用,因为我有 if 并且它返回列表或列表但不起作用,或者因为我在线使用 dart 的编辑器不好
  • 有什么建议可以让函数更有效地解决这个问题?
  var list = [];
  var arr1Item = arr1[0];
  var arr2Item = arr2[0];
  var i = 1;
  var j = 1;

  if (arr1.length == 0) {
    return arr2;
  }
  if (arr2.length == 0) {
    return arr1;
  }
  while (arr2Item || arr1Item) {
    if (!arr2Item || arr1Item < arr2Item) {
      list.add(arr1Item);
      arr1Item = arr1[i];
      i++;
    } else {
      list.add(arr2Item);
      arr2Item = arr2[i];
      j++;
    }
  }
  print(list);
}
void main() {
  reverseString([1, 2, 5, 31], [21, 5, 8]);
}

【问题讨论】:

    标签: flutter dart


    【解决方案1】:

    与 JavaScript 不同,您不能简单地检查数组的真实值。代码if (arr) 将引发错误,因为arr 不会计算为bool 值。

    我不完全确定你想在这里实现什么,但有一些关于高效 Dart / Flutter 的想法:

    要合并两个数组,您可以简单地添加数组。

    
    final array1 = [1, 2, 3];
    final array2 = [4, 5, 6];
    
    final joinedArray = array1 + array2;
    print(joinedArray); // [1, 2, 3, 4, 5, 6];
    

    不要检查length == 0,而是使用isEmpty

    if (arr1.isEmpty)
    

    可以使用内置的.reversed 方法完成数组的反转。

    final reversedArray = array1.reversed;
    

    【讨论】:

    • 感谢您的努力,我不尝试检查数组的真实值吗?你能解释一下错误在哪里吗?
    • while (arr2Item || arr1Item)。再看一眼,您正在检查 int 是否真实,但这在 Dart 中也不起作用。如果你想确保某些东西不是null,请使用arr2Item != null || arr1Item != null
    猜你喜欢
    • 1970-01-01
    • 2020-08-07
    • 1970-01-01
    • 2020-12-14
    • 2020-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多