indexOf():是否有更好的方法来实现呢?

内森

编辑

谢谢你们,我对我的问题没有更具体表示歉意。编写此代码是为了检查第二个字符串中的字符是否在第一个字符串中。如果是这样,它将返回true,否则返回false。

所以我的代码行得通,我知道很多,但是我很肯定必须有一种更好的方法来实现这一点。

请记住,这是来自Freecodecamp的Javascript树的编码挑战。

这是我的代码:

function mutation(arr) {

  var stringOne = arr[0].toLowerCase();
  var stringTwo = arr[1].toLowerCase().split("");
  var i = 0;
  var truthyFalsy = true;

  while (i < arr[1].length && truthyFalsy) {

    truthyFalsy = stringOne.indexOf(stringTwo[i]) > -1;
    i++

  }
  console.log(truthyFalsy);
}




mutation(["hello", "hey"]);
//mutation(["hello", "yep"]);

这一定是更好的方法。我最近了解了map函数,但不确定如何使用它来实现此功能,并且最近还了解了Array.prototype.every()函数,我将在今晚阅读该函数。

有什么建议吗?有什么想法吗?

巴米

这个问题很模糊。但是我从代码中了解的是,您需要检查两个字符串之间的字符串匹配。

既然您知道它的两个字符串,我就将它们作为两个参数传递。另外,我会将while更改为for语句,并添加一个break / continue以避免使用变量get和set。

请注意,在最坏的情况下,它几乎是相同的,但在最好的情况下,它是一半的计算时间。

mutation bestCase 14.84499999999997
mutation worstCase 7.694999999999993
bestCase: 5.595000000000027
worstCase: 7.199999999999989

// your function (to check performance difference)
function mutation(arr) {

  var stringOne = arr[0].toLowerCase();
  var stringTwo = arr[1].toLowerCase().split("");
  var i = 0;
  var truthyFalsy = true;

  while (i < arr[1].length && truthyFalsy) {

    truthyFalsy = stringOne.indexOf(stringTwo[i]) > -1;
    i++

  }
  return truthyFalsy;
}



function hasMatch(base, check) {
  var strOne = base.toLowerCase();
  var strTwo = check.toLowerCase().split("");

  var truthyFalsy = false;

  // define both variables (i and l) before the loop condition in order to avoid getting the length property of the string multiple times.
  for (var i = 0, l = strTwo.length; i < l; i++) {
    var hasChar = strOne.indexOf(strTwo[i]) > -1;
    if (hasChar) {
      //if has Char, set true and break;
      truthyFalsy = true;
      break;
    }
  }
  return truthyFalsy;
}

var baseCase = "hello";
var bestCaseStr = "hey";
var worstCaseStr = "yap";

//bestCase find match in first iteration
var bestCase = hasMatch("hello", bestCaseStr);
console.log(bestCase);

//worstCase loop over all of them.
var worstCase = hasMatch("hello", worstCaseStr);
console.log(worstCase);

// on your function
console.log('mutation bestCase', checkPerf(mutation, [baseCase, bestCaseStr]));

console.log('mutation worstCase', checkPerf(mutation, [baseCase, worstCaseStr]));

// simple performance check
console.log('bestCase:', checkPerf(hasMatch, baseCase, bestCaseStr));

console.log('worstCase:', checkPerf(hasMatch, baseCase, worstCaseStr));

function checkPerf(fn) {
  var t1 = performance.now();
  for (var i = 0; i < 10000; i++) {
    fn(arguments[1], arguments[2]);
  }
  var t2 = performance.now();
  return t2 - t1;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

是否有更好的方法来检查在Java中8这种状况呢?

来自分类Dev

是否有更好的(更明智的)方法来实现相同的目标?

来自分类Dev

有没有安全的方法来评估红宝石?还是更好的方法呢?

来自分类Dev

是否有更好的方法来减轻此警告?

来自分类Dev

有没有更好的方法来实现没有Javascript的CSS动画?

来自分类Dev

有没有更好的方法来实现没有Javascript的CSS动画?

来自分类Dev

有没有更好的方法来实现此MATLAB代码?

来自分类Dev

有没有更好的方法来实现2-SUM算法?

来自分类Dev

有没有更好的方法来实现try..catch机制?

来自分类Dev

有没有一种方法可以使用transform而不是for_each来实现呢?如果是,这样做是否更好?

来自分类Dev

还有其他更好的方法来实现此逻辑吗?

来自分类Dev

有没有更好的方法来检查AJAX请求的值是否有效?

来自分类Dev

Kibana显示了过多的存储桶异常。如何增加水桶或有更好的方法来解决呢?

来自分类Dev

有没有比cURL更快/更好的方法来检查URL是否可访问?

来自分类Dev

有没有更好的方法来检查是否存在Boost共享内存段?

来自分类Dev

有没有更好的方法来检查多个变量是否在Python中是单个类型?

来自分类Dev

有没有更好的方法来检测nextUntil是否定期停止?

来自分类Dev

R中是否有更好的方法来拆分具有多个部分的文件

来自分类Dev

有没有更好的方法来检测nextUntil是否定期停止?

来自分类Dev

有没有更好的方法来检查 pid 输入是否都是数字?

来自分类Dev

在AngularDart的链接中是否有更好的方法来按名称引用路线?

来自分类Dev

是否有更好的方法来获得限制为1的随机记录

来自分类Dev

sbt:是否有更好的方法来构建大型build.sbt文件

来自分类Dev

在Swift中,是否有更好的方法来初始化“仅获取”变量?

来自分类Dev

是否有更好的方法来基于文件类型映射命令调用

来自分类Dev

是否有更好的方法来查找Min Heap中的节点之间的最短路径

来自分类Dev

是否有更好的方法来调整以numpy数组形式显示的图像的大小?

来自分类Dev

执行超时(12000毫秒):是否有更好的方法来解决此问题?

来自分类Dev

通过在Dart中添加2个对象键,是否有更好的方法来创建对象?

Related 相关文章

  1. 1

    是否有更好的方法来检查在Java中8这种状况呢?

  2. 2

    是否有更好的(更明智的)方法来实现相同的目标?

  3. 3

    有没有安全的方法来评估红宝石?还是更好的方法呢?

  4. 4

    是否有更好的方法来减轻此警告?

  5. 5

    有没有更好的方法来实现没有Javascript的CSS动画?

  6. 6

    有没有更好的方法来实现没有Javascript的CSS动画?

  7. 7

    有没有更好的方法来实现此MATLAB代码?

  8. 8

    有没有更好的方法来实现2-SUM算法?

  9. 9

    有没有更好的方法来实现try..catch机制?

  10. 10

    有没有一种方法可以使用transform而不是for_each来实现呢?如果是,这样做是否更好?

  11. 11

    还有其他更好的方法来实现此逻辑吗?

  12. 12

    有没有更好的方法来检查AJAX请求的值是否有效?

  13. 13

    Kibana显示了过多的存储桶异常。如何增加水桶或有更好的方法来解决呢?

  14. 14

    有没有比cURL更快/更好的方法来检查URL是否可访问?

  15. 15

    有没有更好的方法来检查是否存在Boost共享内存段?

  16. 16

    有没有更好的方法来检查多个变量是否在Python中是单个类型?

  17. 17

    有没有更好的方法来检测nextUntil是否定期停止?

  18. 18

    R中是否有更好的方法来拆分具有多个部分的文件

  19. 19

    有没有更好的方法来检测nextUntil是否定期停止?

  20. 20

    有没有更好的方法来检查 pid 输入是否都是数字?

  21. 21

    在AngularDart的链接中是否有更好的方法来按名称引用路线?

  22. 22

    是否有更好的方法来获得限制为1的随机记录

  23. 23

    sbt:是否有更好的方法来构建大型build.sbt文件

  24. 24

    在Swift中,是否有更好的方法来初始化“仅获取”变量?

  25. 25

    是否有更好的方法来基于文件类型映射命令调用

  26. 26

    是否有更好的方法来查找Min Heap中的节点之间的最短路径

  27. 27

    是否有更好的方法来调整以numpy数组形式显示的图像的大小?

  28. 28

    执行超时(12000毫秒):是否有更好的方法来解决此问题?

  29. 29

    通过在Dart中添加2个对象键,是否有更好的方法来创建对象?

热门标签

归档