排序和操作json对象,javascript

排序和操作json对象,javascript,javascript,arrays,json,angularjs,underscore.js,Javascript,Arrays,Json,Angularjs,Underscore.js,我有一个json响应,格式如下: some_array = [{ ios: "110" rate_pl: "PlanC" ref_site: "N/A" reservation_id: "12709034" },{ ios: "121" rate_pl: "SomePlan" ref_site: "FB" reservation_id: "1273034 },{ ios: "141" rate_pl: "PlanC" ref_site: "Tweet" reservation_id: "1430

我有一个json响应,格式如下:

some_array = [{
ios: "110"
rate_pl: "PlanC"
ref_site: "N/A"
reservation_id: "12709034"
},{
ios: "121"
rate_pl: "SomePlan"
ref_site: "FB"
reservation_id: "1273034
},{
ios: "141"
rate_pl: "PlanC"
ref_site: "Tweet"
reservation_id: "143034
}];
我如何对一个特定属性进行分组,比如“rate\u pl”,并在与该特定rate\u pl相关的ios中添加值

示例-->结果应为:

someObject = [
    {PlanC: ['ios':251]},              //(110+141 = 251)
    {SomePlan: ['ios':121]}
    ]; 
您可以使用函数,如下所示:

var result = some_array.reduce(function(prev, cur) {
    if (prev[cur.rate_pl] === undefined) {        
        prev[cur.rate_pl] = [];
        prev[cur.rate_pl].push({ ios : parseInt(cur.ios, 10) });
    } else {
        prev[cur.rate_pl][0].ios += parseInt(cur.ios, 10);
    }
    return prev;
}, []);
很少。

您可以使用函数,如下所示:

var result = some_array.reduce(function(prev, cur) {
    if (prev[cur.rate_pl] === undefined) {        
        prev[cur.rate_pl] = [];
        prev[cur.rate_pl].push({ ios : parseInt(cur.ios, 10) });
    } else {
        prev[cur.rate_pl][0].ios += parseInt(cur.ios, 10);
    }
    return prev;
}, []);
很少。

您可以使用函数,如下所示:

var result = some_array.reduce(function(prev, cur) {
    if (prev[cur.rate_pl] === undefined) {        
        prev[cur.rate_pl] = [];
        prev[cur.rate_pl].push({ ios : parseInt(cur.ios, 10) });
    } else {
        prev[cur.rate_pl][0].ios += parseInt(cur.ios, 10);
    }
    return prev;
}, []);
很少。

您可以使用函数,如下所示:

var result = some_array.reduce(function(prev, cur) {
    if (prev[cur.rate_pl] === undefined) {        
        prev[cur.rate_pl] = [];
        prev[cur.rate_pl].push({ ios : parseInt(cur.ios, 10) });
    } else {
        prev[cur.rate_pl][0].ios += parseInt(cur.ios, 10);
    }
    return prev;
}, []);

很少。

正如其他人所说的,由于您混合了数组和对象,所以有点混淆您想要什么

为了帮助您,如果您正在寻找以下响应:

{
    PlanC: {
        ios: 251
    },
    SomePlan: {
        ios: 121
    }
}
您可以使用以下代码:

var new_object = {};
for (var i = 0; i < some_array.length; i++) {
    if (angular.isUndefined(new_object[some_array[i].rate_pl])) {
        new_object[some_array[i].rate_pl] = {ios: 0};
    }
    new_object[some_array[i].rate_pl].ios += parseInt(some_array[i].ios);
}
var new_object={};
for(var i=0;i

如果您确实希望某些对象是易于修改的数组。

正如其他人所说的,由于您将数组和对象混合在一起,所以有点混淆您想要的内容

为了帮助您,如果您正在寻找以下响应:

{
    PlanC: {
        ios: 251
    },
    SomePlan: {
        ios: 121
    }
}
您可以使用以下代码:

var new_object = {};
for (var i = 0; i < some_array.length; i++) {
    if (angular.isUndefined(new_object[some_array[i].rate_pl])) {
        new_object[some_array[i].rate_pl] = {ios: 0};
    }
    new_object[some_array[i].rate_pl].ios += parseInt(some_array[i].ios);
}
var new_object={};
for(var i=0;i

如果您确实希望某些对象是易于修改的数组。

正如其他人所说的,由于您将数组和对象混合在一起,所以有点混淆您想要的内容

为了帮助您,如果您正在寻找以下响应:

{
    PlanC: {
        ios: 251
    },
    SomePlan: {
        ios: 121
    }
}
您可以使用以下代码:

var new_object = {};
for (var i = 0; i < some_array.length; i++) {
    if (angular.isUndefined(new_object[some_array[i].rate_pl])) {
        new_object[some_array[i].rate_pl] = {ios: 0};
    }
    new_object[some_array[i].rate_pl].ios += parseInt(some_array[i].ios);
}
var new_object={};
for(var i=0;i

如果您确实希望某些对象是易于修改的数组。

正如其他人所说的,由于您将数组和对象混合在一起,所以有点混淆您想要的内容

为了帮助您,如果您正在寻找以下响应:

{
    PlanC: {
        ios: 251
    },
    SomePlan: {
        ios: 121
    }
}
您可以使用以下代码:

var new_object = {};
for (var i = 0; i < some_array.length; i++) {
    if (angular.isUndefined(new_object[some_array[i].rate_pl])) {
        new_object[some_array[i].rate_pl] = {ios: 0};
    }
    new_object[some_array[i].rate_pl].ios += parseInt(some_array[i].ios);
}
var new_object={};
for(var i=0;i

如果您确实希望某些对象是易于修改的数组。

首先要做的是使用以下方法按速率对数组进行分组:

这将返回一个对象,其中键是不同的rate\u pl值,这些值将是具有该rate\u pl的所有对象的数组:

{
   PlanC: [ { ios: '110', etc }, {iod: '141' etc } ],
   SomePlan: [ { ios: 121 etc } ]
}
接下来要做的是将这些值转换为您想要的(或类似于您想要的)。可以使用下划线1.8中介绍的:

var result = _.mapObject(groups, function(rates){
    return {
        ios: _.reduce(rates, function(memo, rate){
            return memo + parseInt(rate.ios);
        }, 0)
    }
});
这将为您提供:

{
   PlanC: { ios: '251' },
   SomePlan: { ios: 121 }
}

要做的第一件事是使用以下各项按速率对阵列进行分组:

这将返回一个对象,其中键是不同的rate\u pl值,这些值将是具有该rate\u pl的所有对象的数组:

{
   PlanC: [ { ios: '110', etc }, {iod: '141' etc } ],
   SomePlan: [ { ios: 121 etc } ]
}
接下来要做的是将这些值转换为您想要的(或类似于您想要的)。可以使用下划线1.8中介绍的:

var result = _.mapObject(groups, function(rates){
    return {
        ios: _.reduce(rates, function(memo, rate){
            return memo + parseInt(rate.ios);
        }, 0)
    }
});
这将为您提供:

{
   PlanC: { ios: '251' },
   SomePlan: { ios: 121 }
}

要做的第一件事是使用以下各项按速率对阵列进行分组:

这将返回一个对象,其中键是不同的rate\u pl值,这些值将是具有该rate\u pl的所有对象的数组:

{
   PlanC: [ { ios: '110', etc }, {iod: '141' etc } ],
   SomePlan: [ { ios: 121 etc } ]
}
接下来要做的是将这些值转换为您想要的(或类似于您想要的)。可以使用下划线1.8中介绍的:

var result = _.mapObject(groups, function(rates){
    return {
        ios: _.reduce(rates, function(memo, rate){
            return memo + parseInt(rate.ios);
        }, 0)
    }
});
这将为您提供:

{
   PlanC: { ios: '251' },
   SomePlan: { ios: 121 }
}

要做的第一件事是使用以下各项按速率对阵列进行分组:

这将返回一个对象,其中键是不同的rate\u pl值,这些值将是具有该rate\u pl的所有对象的数组:

{
   PlanC: [ { ios: '110', etc }, {iod: '141' etc } ],
   SomePlan: [ { ios: 121 etc } ]
}
接下来要做的是将这些值转换为您想要的(或类似于您想要的)。可以使用下划线1.8中介绍的:

var result = _.mapObject(groups, function(rates){
    return {
        ios: _.reduce(rates, function(memo, rate){
            return memo + parseInt(rate.ios);
        }, 0)
    }
});
这将为您提供:

{
   PlanC: { ios: '251' },
   SomePlan: { ios: 121 }
}


您真的希望得到一个对象数组,每个对象都有一个动态确定的名称的属性吗?{PlanC:['ios':251]}看起来很奇怪。你的意思是{PlanC:{'ios':251}?你的JSON是无效的,因为在你的对象属性之间没有
。通过循环它并将信息插入一个新对象。你真的想得到一个对象数组,每个对象都有一个动态确定的名称吗?{PlanC:['ios':251]}看起来很奇怪。你的意思是{PlanC:{'ios':251}?你的JSON是无效的,因为在你的对象属性之间没有
。通过循环它并将信息插入一个新对象。你真的想得到一个对象数组,每个对象都有一个动态确定的名称吗?{PlanC:['ios':251]}看起来很奇怪。你的意思是{PlanC:{'ios':251}?你的JSON是无效的,因为在你的对象属性之间没有
。通过循环它并将信息插入一个新对象。你真的想得到一个对象数组,每个对象都有一个动态确定的名称吗?{PlanC:['ios':251]}看起来很奇怪。你的意思是{PlanC:{'ios':251}}?你的JSON是无效的,因为在你的对象属性之间没有
。通过循环它并将信息插入到一个新对象中。当然,你可以用其他方法检查是否未定义,如果你不使用angular,但是因为post被标记为wi