代码大战挑战

时间:2017-03-02 19:21:25

标签: javascript

https://www.codewars.com/kata/55d5434f269c0c3f1b000058/train/javascript - 这是任务的链接:

function tripledouble(num1, num2) {
var a = 0;
var b = 0;

  for(var i = 0; i < num1.length; i++){
if(true){
    var j = i +1;
    if(num1[i]=== num1[j]){
        return a = 1;
    }else{
        return a = 0;
    }}
}
for ( var x =0; x<num2.length; x++){

if(true){
    var h = x +1;
    if(num1[x]=== num1[h]){
        return   b = 1;
    }else{
        return  b = 0;

}
}

}
return a*b;

}

我有两个问题 -

1)我的代码有什么问题 - 比如我的错误在哪里 第二个: 2)是否可以使用arr.reduce()来解决此任务?

1 个答案:

答案 0 :(得分:1)

我认为您遇到问题的地方就是代码的最开始。你不能迭代数字。在将来,您将希望始终验证即将进入的输入。一个简单的console.log(num1,num2)可以向您说明迭代输入存在问题。

typeof operator https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/typeof

传播运营商https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_operator

无论如何我做得很开心。我希望它可以帮助你!如果您觉得它有用,或者您认为其他人会认为它有用,请不要害怕点击upvote按钮。

function tripledouble(num1, num2) {

  const first = [...JSON.stringify(num1).split('')];
  const second = [...JSON.stringify(num2).split('')];

  const triple = first
   .filter((v, k) => v === first[k+1] && v === first[k+2]);

  const double = second
   .filter((v, k) => v === second[k+1]);

  const result = triple
    .filter(trip => double
    .find(dub => dub === trip)) 

  return result.length >= 1 ? 1 : 0;

}