2016-09-07 18 views
0

Javascriptでは、ここで結果を取得し、それらを2つの変数に入れます:ticksとs1。 ! - アイテムゼロを記入して2つの配列を一致させる方法は?

Cycle Count 
1  823 
6  530 
7  475 
9  962 
10  591 
11  121 
13  751 
15  716 
50  133 
100  39 

(そのwhere句のない)、それらすべての合計-items2

どのように多くの場所をどこb.active_serv = 0:

var viewModel = @Html.Raw(Json.Encode(Model)); 
var items = viewModel.Date1; 
var items2 = viewModel.Date2; 
var newCount; 
var ticks = []; 
var s1 = []; 
var colors = []; 
for (var i = 0; i < items.length; i++) {    
    newCount = items[i].theCount/items2[i].theCount * 100; 
    ticks.push(items[i].theCycle); 
    s1.push(newCount); 
    if (newCount < 98) 
     colors.push("#FF2F2F"); 
    else 
     colors.push("#00749F"); 
} 

結果は、このです

Cycle Count 
1  833 
6  532 
7  492 
9  967 
10  611 
11  121 
13  767 
14  37 
15  816 
16  71 
19  3 
21  101 
23  11 
50  133 
100  39 

ご覧のとおり、b.active_serv!= 0(アイテム)の合計(items2)にサイクルがあります。私は私がやっている割合を取得するためitems2と一致する項目を修正する必要があります。

newCount = items[i].theCount/items2[i].theCount * 100; 

がどのように私は、変数の項目のすべてを通過しない、とのためにその配列内の正しい位置にゼロを追加するサイクル数であれば一致しない(または不足している)。

答えて

1

アイテムがtheCycletheCount部材とrowオブジェクトの配列である場合、これはitem2に一致theCycle部材を有していない項目はの{theCycle:0, theCount:0}

items = items2.map(row => 
         //is there a matching row in items? 
         items.filter(r => r.theCycle == row.theCycle).length == 0 ? 
         //if not, fill with zeros 
         {theCycle:0, theCount:0} : 
         //if there is, return the items' row 
         items.filter(r => r.theCycle == row.theCycle)[0]); 

で置換されている行の配列を返しますこれは、r.theCycleが一意の識別子であることを前提としています。例えば

、我々はこれら二つの配列があった場合:

var items = [{theCycle:2, theCount:2}, {theCycle:1, theCount:1}]; 
var items2 = [{theCycle:2, theCount:2}, {theCycle:1, theCount:1}, {theCycle:3, theCount:3} ]; 

我々は、以下のresutlを取得する必要がありますが:items第三存在しないオブジェクトがゼロに置き換えられ

[{theCycle:2,theCount:2},{theCycle:1,theCount:1},{theCycle:0,theCount:0}] 

関連する問題