排序和操作json对象,javascript
我有一个json响应,格式如下:排序和操作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
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