在JavaScript中遍历对象数组

在JavaScript中遍历对象数组,javascript,for-loop,Javascript,For Loop,我有一个如下所示的对象数组: var model = ([{ "MKT_BRAND_NAME": "LUX", "Brand_GRP": 783.52, "Category_GRP": 0.0, "SOV": 0.051, "MM": "10", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null }, { "MKT_BRAND_NAME": "LUX", "Brand_GRP": 356.12, "Category_

我有一个如下所示的对象数组:

var model = ([{ "MKT_BRAND_NAME": "LUX", "Brand_GRP": 783.52, "Category_GRP": 0.0, "SOV": 0.051, "MM": "10", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null  },
           { "MKT_BRAND_NAME": "LUX", "Brand_GRP": 356.12, "Category_GRP": 0.0, "SOV": 0.050, "MM": "11", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null },
           { "MKT_BRAND_NAME": "LUX", "Brand_GRP": 935.27, "Category_GRP": 0.0, "SOV": 0.23, "MM": "7 ", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null},
           { "MKT_BRAND_NAME": "LUX", "Brand_GRP": 3380.81, "Category_GRP": 0.0, "SOV": 0.15, "MM": "8 ", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null },
           { "MKT_BRAND_NAME": "LUX", "Brand_GRP": 3536.21, "Category_GRP": 0.0, "SOV": 0.15, "MM": "9 ", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null}
           { "MKT_BRAND_NAME": "PEARS", "Brand_GRP": 3380.81, "Category_GRP": 0.0, "SOV": 0.18, "MM": "8 ", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null },
           { "MKT_BRAND_NAME": "PEARS", "Brand_GRP": 3536.21, "Category_GRP": 0.0, "SOV": 0.17, "MM": "9 ", "QUARTER": "", "YYYY": "2014", "TargetGroupId": null}]);
我想显示特定MKT_品牌名称的SOV和MM值。我想将MKT_品牌名称分配给“键”,将MM和SOV对分配给“值”

  var model = [{
            "key": "Lux",
            "values": [{MM:"10",SOV:0.015},
                       {MM:"11",SOV:0.050},
                       {MM:"7",SOV:0.23},
                       {MM:"8",SOV:0.15},
                       {MM:"9",SOV:0.15}]
                    }, {
           "key": "Pears",
           "values": [{MM:"8",SOV:0.018},
                      {MM:"9",SOV:0.017},

        }];

谁能告诉我如何通过
JavaScript
中的
for
循环来实现这一点

像这样使用reduce函数怎么样:

grouped = model.reduce(function(memo, o){

  if (typeof(memo[o["MKT_BRAND_NAME"]]) == "undefined")
    memo[o["MKT_BRAND_NAME"]] = [];

  memo[o["MKT_BRAND_NAME"]].push({MM: o["MM"], SOV: o["SOV"]});

  return memo;

}, {});

result = [];
for (var key in grouped) {
  result.push({key: key, values: grouped[key]})
}

console.log(JSON.stringify(result, null, 4))

此函数满足您的要求:

function convert(model) {
    var new_model = [];
    for (var i = 0; i < model.length; i++) {
        var model_record = model[i];
        var matched_new_model_record = null;
        for (var j = 0; j < new_model.length; j++) {
            var new_model_record = new_model[j];
            if (new_model_record.key === model_record.MKT_BRAND_NAME) {
                matched_new_model_record = new_model_record;
                break;
            }
        }
        if (matched_new_model_record === null) {
            matched_new_model_record = {key: model_record.MKT_BRAND_NAME, values: []};
            new_model.push(matched_new_model_record);
        }
        matched_new_model_record.values.push({MM: model_record.MM, SOV: model_record.SOV});
    }
    return new_model;
}
函数转换(模型){
var新_模型=[];
对于(变量i=0;i
当我试图在控制台中运行您的代码时,我得到了一个错误,即“Undefined is not a function”(未定义不是函数)。这个问题的可能重复似乎与主题无关,因为它是另一个“为我操纵我的JS对象”在操作部分没有明显努力的提问。使用下划线的
.groupBy
@torazaburo.U是正确的。我无法对MKT_品牌名称进行分组。你能告诉我如何在下面的代码中实现U.groupBy吗。@Soroush。我无法对MKT_品牌名称进行分组。当我为MKT_品牌名称传递多个值时,代码返回MM,每个MKT_品牌名称的SOV值。既然我有5个勒克斯值和2个梨值,你能告诉我如何对MKT_品牌名称进行分组。@KalpanaGupta,你对MKT_品牌名称进行分组的确切含义是什么?