2017-03-02 11 views
-4

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; 

} 

私は2つの質問を持っている - 私のコードが間違っている何

1) - 私のミス とセカンドですように: 2)arr.reduce()でこのタスクを解決することは可能ですか?

+0

あなたのコードが何を期待しているのか、そして何をするのか詳細に説明してください。 – Teemu

+0

*あなたのコードに何が間違っていますか?これはスタックオーバーフローです。質問ありますか? – tadman

+2

*デバッグのヘルプを求める質問(「なぜこのコードは動作しませんか?」)には、**目的の動作、特定の問題またはエラー**、および質問自体に再現するのに必要な最短コードが含まれていなければなりません。 *問題の明確なステートメントがない質問は、他の読者には役に立たない*サードパーティのサイトのタスクにリンクするだけではいけません(ソースを引用する必要がありますが)。役職。 – BSMP

答えて

1

あなたが問題にぶつかっていた場所は、コードの冒頭にあったと思います。数字を反復することはできません。将来は、入力される入力を常に検証したいと思うでしょう。単純なconsole.log(num1、num2)は、入力を反復する際に問題があることを説明することができました。

typeof演算子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

とにかく私はこれをやって楽しい時間を過ごしました。それがあなたを助けることを願っています!それが役に立つと思ったり、他の人が役に立つと思っていると思ったら、アップボートボタンを押すのを恐れないでください。

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; 

} 
関連する問題