使用其(object' s)属性之一从单个JsonObject创建两个对象

时间:2017-07-13 09:55:55

标签: javascript jquery json

我有Json对象

0:Object
    $id:"1"
    MetricValue:83
    GeoValue:"EAST"
    DimensionValue:High
    DocCount:28

1:Object
    $id:"2"
    MetricValue:97
    GeoValue:"SOUTH"
    DimensionValue:Medium
    DocCount:28
2:Object
    $id:"3"
    MetricValue:90
    GeoValue:"West"
    DimensionValue:High
    DocCount:30
3:Object
    $id:"4"
    MetricValue:50
    GeoValue:"NORTH"
    DimensionValue:Medium
    DocCount:30

现在我想基于MetricValue属性

将此对象划分为两个对象

我想将具有MetricValue> = 80的对象分组到一个对象中,并且< 80进入另一个对象。

上述对象将分为

Object1

0:Object
    $id:"1"
    MetricValue:83
    GeoValue:"EAST"
    DimensionValue:High
    DocCount:28

1:Object
    $id:"2"
    MetricValue:97
    GeoValue:"SOUTH"
    DimensionValue:Medium
    DocCount:28
2:Object
    $id:"3"
    MetricValue:90
    GeoValue:"West"
    DimensionValue:High
    DocCount:30

Object2的

0:Object
    $id:"1"
    MetricValue:50
    GeoValue:"NORTH"
    DimensionValue:Medium
    DocCount:30

1 个答案:

答案 0 :(得分:2)

这可以通过使用filterObject.keys()来完成。

var arr1 = Object.keys(yourObject).filter(function(obj){
    return obj.metricValue < 91;
});
var arr2 = Object.keys(yourObject).filter(function(obj) {
    return obj.metricValue > 90
});

这将为您提供两个数组,arr1包含度量值小于91的对象,arr2包含度量值大于90的对象。然后,您可以使用此代码Create object from array将这些数组转换回对象

或者你可以像这样遍历对象属性:

for (var prop in obj) {
    if (obj.hasOwnProperty(prop)) {
         // Check metric values here and assign to your new objects
         if(prop.metricValue > 90) // assign to your new object
         else // assign to other object
     } 
 }