2016-05-12 22 views
0

私は約束を使ってサーバからデータを取得しています。約束の成功で、私は、サーバーから来たdataこの構造多次元配列を持つループスルーオブジェクト

{"result":"answered","data":[["jake","508"],["amir","602"],["ben","450"]]} 

を持っていると私は数字だけに508、602および450を取得したい。しかし、私は常に取得するので、私はこれを行う

promise.success(function (data, status) {       
    for (i = 0; i <= data.data.length; i++){ 
    $scope.anArray[i] = data.data[i][1] ; 
    } 
}      

を行います同じエラーTypeError: Cannot read property '0' of undefinedこの行への返信:$scope.anArray[i] = data.data[i][0] ;

これらの数値はライブラリに供給され、グラフが作成されます。チャートが作成されることもありますが、時にはそうではありません。作成されても、常に同じエラーが存在します。

このエラーを修正し、チャートを常に問題なく作成する方法はわかりません。コードdata.data[i][0]のようなコードのように見えません。data.data[i]のような単純な配列ではエラーが発生しません。

どうすればよいですか?

ありがとうございました

+1

です。使用する 'angular.forEach()'は、もっときれいで、すでにlibコアにあります。 https://docs.angularjs.org/api/ng/function/angular.forEach – sbaaaang

+0

@sbaaaang私は自分のコードを修正するための最小限の編集が必要なので、正しい答えとしてPaarthsの答えを選びました。しかし、あなたの提案もとても素敵です。私は「forEach」があるのを忘れていました。助けてくれてありがとう。 – slevin

+0

もちろん、angular.forEach()はループクリーナー用であり、使いやすく、覚えておいて平易なjを使用することはできません;) – sbaaaang

答えて

1

forループに余分な実行があります。 i0に初期化しましたが、<=も使用しました。つまり、array[array.length]が実行不能になっています。それはundefinedを返し、その未定義のインデックス[0]にアクセスしようとすると、そのエラーが発生します。あなたが割り当てを行うことができるしている場合は

変更

for (i = 0; i < data.data.length; i++){ 

に個人的に私は

$scope.anArray = data.data.map(entry => entry[1]); 

に行くだろうし、完全にループのためにスキップします。あなたがラムダを避けたいのであれば、これは

$scope.anArray = data.data.map(function(entry) { return entry[1]; }); 
+0

はい、私は '$ scope .anArray [i] = data.data [i] [1]; '、私は自分の質問を編集しました。また、...デュード、そうです、私がしなければならなかったのは、私のために消去することでした。ありがとう – slevin