LoginSignup
sharp231
@sharp231

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

奇数、偶数判定のアルゴリズム#2

解決したいこと

入力した文字列の数字を配列するための処理を完成させたいです

発生している問題・エラー

TypeError: result.push is not a function
    at StringChallenge (/tmp/605897859/main.js:25:12)
    at Object.<anonymous> (/tmp/605897859/main.js:33:13)
    at Module._compile (node:internal/modules/cjs/loader:1254:14)
    at Module._extensions..js (node:internal/modules/cjs/loader:1308:10)
    at Module.load (node:internal/modules/cjs/loader:1117:32)
    at Module._load (node:internal/modules/cjs/loader:958:12)
    at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:81:12)
    at node:internal/main/run_main_module:23:47

function StringChallenge(num) {
  //数字じゃなく文字列で出力しなければならい
  let result = [];
  num = num.toString();

  for (let i = 0; i < num.length - 1; i++) {
    const oddnumber = num[i]
    const evennumber = num[i + 1]
    //0は無視
    //if文の書き方にミスがある0の処理ではなく偶数、奇数の処理にしてみます

    //偶数同士に'*'を入れる条件式 等価演算子または厳密演算子でコードを作成する
    if ((oddnumber % 2 == 0) && (oddnumber % 2 == 0)) {
      result += (oddnumber, '*');

    }
    //奇数同士で'-'を入れる条件式
    else if ((evennumber % 2 == 1) && (evennumber % 2 == 1)) {
      result += (evennumber, '-');
    }
    else {
      ;
    }
  //入力した文字列の数字を配列するための処理が必要
    result.push(num[num.length - 1]);
  }
  // code goes here  
  //最後は文字列で連結する
  return result.join('');

}
// keep this function call here 
console.log(StringChallenge(readline()));

自分で試したこと

上記のサイトを利用し問題解決を試しましたが
できなかったのでアドバイスをお願いします

0

1Answer

加算代入演算子のところでresultが文字列にキャストされてしまっているのではないでしょうか。
result +=result.push関数に置き換えたら動作します

function StringChallenge(num) {
  //数字じゃなく文字列で出力しなければならい
  let result = [];
  num = num.toString();

  for (let i = 0; i < num.length - 1; i++) {
    const oddnumber = num[i]
    const evennumber = num[i + 1]
    //0は無視
    //if文の書き方にミスがある0の処理ではなく偶数、奇数の処理にしてみます

    //偶数同士に'*'を入れる条件式 等価演算子または厳密演算子でコードを作成する
    if ((oddnumber % 2 == 0) && (oddnumber % 2 == 0)) {
-      result += (oddnumber, '*');
+      result.push(oddnumber, '*');

    }
    //奇数同士で'-'を入れる条件式
    else if ((evennumber % 2 == 1) && (evennumber % 2 == 1)) {
-      result += (evennumber, '-');
+      result.push(evennumber, '-');
    }
    else {
      ;
    }
  //入力した文字列の数字を配列するための処理が必要
    result.push(num[num.length - 1]);
  }
  // code goes here  
  //最後は文字列で連結する
  return result.join('');

}
// keep this function call here 
console.log(StringChallenge(readline()));

3

Comments

  1. @sharp231

    Questioner

    ありがとうございます

Your answer might help someone💌