2014-10-08 2 views
0

У меня есть два объекта в угловомФильтрация более двух объектов

$scope.data_1 = {"a":5,"b":6,"c":7,'d':1}; 
    $scope.data_2 = {"a":6,"b":3,"c":2,'d':10}; 

я четко о том, как сравнивать значения в пределах объекта ..

.filter('getMax', function(){ 
return function (data) { 
    return Math.max.apply(Math, 
        Object.keys(data).map(function(key){ 
        return data[key] 
        })); 
}; 

})

Но как я могу сравнить два объекта, чтобы выделить большее значение для каждой клавиши?

<div ng-repeat="item in data_1"> 
<p>{{item}}</p> 
</div> 

<div ng-repeat="item in data_2"> 
<p>{{item}}</p> 
</div> 

результат

5, 6 , , 1 и 6 , 3,2,

+0

Вы пытаетесь получить массив, который имеет большее значение в нем? Как data_greater = {"a": 6, "b": 6, ......}? Должно быть достаточно просто, чтобы просто создать метод для цикла над массивом, сравнить и построить и вернуть массив с большими значениями. – Scott

+0

Извинения. Я отредактировал его, чтобы ответить на ваш ответ. Я не хочу создавать новый массив – pedro

ответ

1

Как о чем-то вроде этого, или некоторые вариации.

<div ng-repeat="(key,value) in data_1"> 
    <p class="{{computeGreatest(key,value,data_2)}}">{{value}}</p> 
    </div> 
    <div ng-repeat="(key,value) in data_2"> 
    <p class="{{computeGreatest(key,value,data_1)}}">{{value}}</p> 
    </div> 


$scope.computeGreatest = function (key,value,data2) { 
    var ret = ""; 
    if(value > data2[key]){ 
     ret = "bold"; 
    } 
    return ret; 

    }; 
Смежные вопросы