質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.37%
CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

1回答

26941閲覧

Uncaught TypeError: data.push is not a function が発生する理由

退会済みユーザー

退会済みユーザー

総合スコア0

CoffeeScript

CoffeeScriptはプログラミング言語です。シンタックスシュガーの導入により、JavaScriptのコードに変換された後動作します。JavaScriptに比べ、可読性と簡潔性が向上しています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

2クリップ

投稿2015/05/10 05:13

オブジェクト配列にpushをしようとしているのですが、
Uncaught TypeError: data.push is not a function
と表示されてしまい、追加ができません。

いろいろなネット上にあるコードと見比べても同じだと思えるし、
いったい何が原因でエラーになっているのかがわかりません。

最初にnew Array() をしてから .eachでループして追加しています。

lang

1data = new Array() 2# key,value 処理 3# $.each で data_array から keyとvalue 取り出し 4data.push 5 key:key 6 value:value

lang

1parts.push({ 2 key: key, 3 value: value, 4});

括弧の配置などが原因かと思ったのですが、エラーが出ます。

lang

1data.push( 2 key:key 3 value:value 4) 5 6data.push( 7 [ 8 key:key 9 value:value 10 ] 11)

値がunderfindになるとエラーになるのかな?と思ってみたのですが、
状況は変わりません。同じエラーが発生します。

lang

1data.push 2 key:123 3 value:456

どの部分が問題なのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

coffeescript.org
の Try CoffeeScriptで下記コードを記載して実行してみました。

lang

1data= [] #data is array 2key="aa" 3value="bb" 4 5data.push 6 key: key 7 value: value 8 9alert(data[0].key)

すると "aa" と表示されました。これは意図通りですね。
つまり、ここの部分に問題はないのです。

つぎに、

lang

1data= {} # data is object ! 2key="aa" 3value="bb" 4 5data.push 6 key: key 7 value: value 8 9alert(data[0].key)

と書いて実行すると、
"TypeError: data.push is not a function"
が表示されました。

というわけで、このpushする直前の段階で、data が 何らかの理由で
配列になっていないということが 問題であることが 分かりますね。

投稿2015/05/10 05:29

okayu3

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/05/10 05:44

ありがとうございます。 ご指摘の通り、dataが配列ではない状態でした。 コードをよく見なおしてみるとdataを上書きしている箇所がありました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.37%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問