2016-07-15 4 views
0

I私のコントローラのために工場に縛ら機能があります。AngularJS:JSONレスポンスから新しい配列を作成する方法は?

$scope.DailyCounters = null; 
DailyCounterService.GetDailyCountersList().then(function (d) { 
    $scope.DailyCounters = d.data; 
}, function (error) { 
    alert('Error!'); 
}); 

これに基づき、私は出力変数にした場合:ここでは、コントローラ内部

fac.GetDailyCountersList = function() { 
    return $http.get('/Data/GetDailyCountersList') 
} 

は、関数が呼び出されるところですhtmlページ上で、これが表示されるでしょう:

[{"Id":1,"MIDay":"16","MITime":"900","MICounter":0}, 
{"Id":2,"MIDay":"16","MITime":"915","MICounter":1}, 
{"Id":3,"MIDay":"16","MITime":"930","MICounter":0}, 
{"Id":4,"MIDay":"17","MITime":"945","MICounter":0}, 
{"Id":5,"MIDay":"17","MITime":"1000","MICounter":0}, 
{"Id":6,"MIDay":"17","MITime":"1015","MICounter":52}, 
{"Id":7,"MIDay":"18","MITime":"1030","MICounter":2}, 
{"Id":8,"MIDay":"18","MITime":"1045","MICounter":3}, 
{"Id":9,"MIDay":"18","MITime":"1100","MICounter":0}] 

私の質問は、このデータを取得し、JSONの特性の一つに基づいて他の配列を作成する方法ですデータ。例えば

、どのように私は新しい配列 "ArrayDay16" へと

{"Id":1,"MIDay":"16","MITime":"900","MICounter":0}, 
{"Id":2,"MIDay":"16","MITime":"915","MICounter":1}, 
{"Id":3,"MIDay":"16","MITime":"930","MICounter":0} 

配列を置くでしょうか?残りの部分もそれぞれの配列に入れます。

私はこのようにそれをやって考えていた:

var myArray = []; 
if (d.data['MIDay'] == '16') 
    myArray.push(d.data); 

しかし、これは間違っている/失敗しました。効率的なソリューションのアイデアですか?

+1

とフィルタ機能を使用することができ、が、 ://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/push)。 –

答えて

0

あなたはfilter機能を使用することができます。

var daySixteen = data.filter(function (d) { return d.MIDay === "16"; }); 
+0

ありがとうございます!これはトリックでした! – NoReceipt4Panda

0

あなたは次を試すことができます。

d.data.foreach(function(item){ 
    if(item.MIDay == 16) 
     myArray.push(d.data); 
}); 
0

あなたが効率的になりたい場合は、バックエンドでこれを行う必要があります制約。ブラウザの仕事ではありません。

HTTPS(あなたはまだそれがフロントエンドでそれをフィルタリングしたい場合は、[JavaScriptをの配列方法、特に `push`]をよく読んで、いくつかのlamdba式

var newList = oldList.filter(i => i["MIDay"] == "16"); 
関連する問題