JavaScriptエラー: "関数ではありません" -- javascript フィールド 関連 問題

Javascript error: “is not a function”












0
vote

問題

日本語

塩基対はATとCGのペアです。不足している要素を提供されている文字に一致させ、結果を2D配列として返します。

下記の方法を使用した場合は、大丈夫です。

<事前> <コード> function pair(str) { str.split(""); //convert the string into an array var newArray = []; for (var i = 0; i < str.length; i++){ var subArray = []; switch (str[i]){ case "G": subArray.push("G", "C"); break; case "C": subArray.push("C", "G"); break; case "A": subArray.push("A", "T"); break; case "T": subArray.push("T", "A"); break; } newArray.push(subArray); } return newArray; } pair("GCG"); //[["G", "C"], ["C", "G"], ["G", "C"]]

しかし、 push() から<コード> splice() への方法を変更しようとしたときは、機能しません。

<事前> <コード> function pair(str) { str.split(""); for (var i = 0; i < str.length; i++){ var subArray = []; switch (str[i]){ case "G": subArray.push("G", "C"); break; case "C": subArray.push("C", "G"); break; case "A": subArray.push("A", "T"); break; case "T": subArray.push("T", "A"); break; } str.splice(i, 1, subArray); } return str; } pair("GCG"); //ERROR:"str.splice is not a function"

最初にこのメソッドが失敗した理由は、 splice() に配列を設定できない理由を考えました。だから私はこれを試してみました:

<事前> <コード> ["G", "C", "G"].splice(0,1,["G","C"]) //["G"]

はうまくいっています。

誰かが私に間違っているのところに私に見せてくれることができます、どうぞ?

英語

Base pairs are a pair of AT and CG. I'm trying to match the missing element to the provided character and return the results as a 2d array.

When I used the method below, it works fine.

 function pair(str) {      str.split("");     //convert the string into an array      var newArray = [];      for (var i = 0; i < str.length; i++){        var subArray = [];        switch (str[i]){          case "G":            subArray.push("G", "C");            break;          case "C":           subArray.push("C", "G");            break;          case "A":            subArray.push("A", "T");            break;          case "T":            subArray.push("T", "A");            break;        }        newArray.push(subArray);      }        return newArray;     }      pair("GCG");     //[["G", "C"], ["C", "G"], ["G", "C"]] 

However, when I tried to change the method from push() to splice()as below, it doesn't work.

function pair(str) {    str.split("");   for (var i = 0; i < str.length; i++){    var subArray = [];    switch (str[i]){      case "G":        subArray.push("G", "C");        break;      case "C":       subArray.push("C", "G");        break;      case "A":        subArray.push("A", "T");        break;      case "T":        subArray.push("T", "A");        break;    }    str.splice(i, 1, subArray);   }   return str;  }  pair("GCG"); //ERROR:"str.splice is not a function" 

At first I thought the reason why this method failed is that we can't set the third parameter in splice()to be an array. So I tried this:

["G", "C", "G"].splice(0,1,["G","C"])   //["G"] 

Looks like it works.

Can anyone show me where am I wrong, please?

</div
  
   
   

回答リスト

1
 
vote
vote
ベストアンサー
 

string.split() 関数はそれ自体を突然切れない。配列を返し、文字列と変わらないようにそれ自体を残します。このコード str.split("") str を個々の文字に分割したいようになります。それで、以下のこのコードを見てください。

<事前> <コード> function pair(str) { var tokens = str.split(""); for (var i = 0; i < tokens.length; i++){ var subArray = []; switch (tokens[i]){ case "G": subArray.push("G", "C"); break; case "C": subArray.push("C", "G"); break; case "A": subArray.push("A", "T"); break; case "T": subArray.push("T", "A"); break; } tokens.splice(i, 1, subArray); } return str; // Not sure if you intend to return original str or not // So please see my note below: }

あなたが実際に文字列を返したいのかどうかはわかりません。

注: subArray str に追加して、これを行うことができます。

<事前> <コード> return tokens.concat(subArray).join('');
 

string.split() function does not mutate itself. It returns an array and leave itself as unchanged as string. Looks like you want to split your str into individual characters from this line of code str.split("") and process. So see this code below:

function pair(str) {      var tokens = str.split("");     for (var i = 0; i < tokens.length; i++){         var subArray = [];         switch (tokens[i]){          case "G":               subArray.push("G", "C");                break;          case "C":               subArray.push("C", "G");                break;          case "A":                subArray.push("A", "T");        break;          case "T":                subArray.push("T", "A");                break;        }        tokens.splice(i, 1, subArray);   }   return str; // Not sure if you intend to return original str or not               // So please see my note below: } 

I'm not sure at the bottom part of your code whether you indeed want to return the string.

NOTE: If you want to append those characters in subArray back to str and return, you can do this:

return tokens.concat(subArray).join(''); 
</div
 
 
2
 
vote
<事前> <コード> str.splice(i, 1, subArray);

strは文字列です。

.SPLICE()アレイ

あなたの論理をチェックする(またはサブアレイがあるはずの能力がある)

<事前> <コード> subArray.splice(i, 1, subArray);
 
str.splice(i, 1, subArray); 

str is string.

.splice() method of Array

Check your logic ( or typo possible there should be subArray )

subArray.splice(i, 1, subArray); 
</div
 
 
 
 
0
 
vote

String.prototype.split 文字列を配列に変更しない場合は、配列を返します。そのため、この str0

を実行できます。

str1 でも文字列にアクセスできるため、元の機能が機能しました。

 

String.prototype.split doesn't change the string into an array, it returns an array. So you can do this str = str.split('');

Your original function worked because you can access strings with [] as well.

</div
 
 

関連する質問

35  ASP.NETカスタムクライアント側の検証  ( Asp net custom client side validation ) 
.NET 2.0 Webサイトでのユーザーコントロールのカスタム検証機能があり、支払われた手数料はかかりません。 ascx ファイルにバリデータコードを置き、 Page.ClientScript.RegisterClientScriptBlock() ...

1279  jQueryでクッキーを設定/設定解除するにはどうすればよいですか。  ( How do i set unset a cookie with jquery ) 
jQueryを使用してCookieを設定して設定します。たとえば、 test という名前のクッキーを作成し、 1 ?に設定します。 ...

0  GWTのJavaからJavaScriptに匿名のJavaScriptオブジェクトを渡すにはどうすればよいですか。  ( How can i pass an anonymous javascript object from java to javascript in gwt ) 
JavaScriptライブラリを丸くするGWTラッパーを作成しています。 JavaScript関数の1つは、その引数として匿名オブジェクトを取ります。: <事前> <コード> obj.buildTabs({ hide: true, placeholder: ...

44  トリプル引用符? ASP.NETでデータバインドJavaScript Stringパラメータを区切る方法  ( Triple quotes how do i delimit a databound javascript string parameter in asp n ) 
Anchor OnClick でJavaScriptデータバインド文字列パラメータを区切りますか? 私はASP.NETリピータコントロールにアンカータグを持っています。 アンカーの OnClick イベントには、JavaScript関数への呼び出しが含ま...

2  サーバーを必要としないクライアント側(JavaScript)グラフライブラリはありますか? [閉まっている]  ( Is there a client side javascript graph library that doesnt require a server ) 
この質問はスタックオーバーフローガイドラインを満たしていません。現在答えを受け付けていません。 この質問を改善したいですか? ...

142  定義されたフォントのどれがWebページで使用されていたかを検出する方法  ( How to detect which one of the defined font was used in a web page ) 
私のページに次のCSSルールがあるとします。 <コード> body { font-family: Calibri, Trebuchet MS, Helvetica, sans-serif; } ユーザーのブラウザで定義されたフォントの1つを使用...

54  2つの関数の違いは? ( "関数x" vs "var x =関数")[重複]  ( The difference between the two functions function x vs var x function ) 
この質問はすでにここで回答を持っています 閉じられた 8年前> 可能な重複: JavaScript:var functionname = function(){} vs関数name(){} < / a> :の違いは何ですか ...

0  LazyWeb:要素の訪問されたクラスに基づいてLI要素を削除するJavaScriptが必要  ( Lazyweb need javascript that removes li elements based on visited class of a el ) 
すでにクリックしたように、必要なデータがたくさんあるこのページを持っていますが、頻繁に青色を探す必要があるので、頻繁に繰り返されます。私はこれがより効率的かもしれないことに気づいて、それが含まれているリンクが訪問されたかどうかに基づいて要素を隠されたように設定...

0  JavaScript - 2つの入力のどちらに焦点が当てられていない場合の検出  ( Javascript detecting when neither of two inputs has focus ) 
ページ上の2つの入力に焦点を当てていないときに、特定の機能を呼び出すことができます。ユーザが単に1つの入力から他方の入力に切り替わると、関数を呼び出すことを望まない。任意のアイデア? ...

0  リスト項目でディスクを取り除く  ( Getting rid of disc in list item ) 
jQueryを使用してサイトを開発し、jQuery UIタブを作成しています。何らかの理由で、私のタブ(順序付けられていないリスト)は、OS XのFirefox 3を除くすべてのブラウザ(これまでにテスト済み)に弾丸を表示しています.Safari OS X、...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有