{
"response_code": "100",
"total_orders": "302",
"order_ids": "930777,930783,930788,930791,930793",
"data": {
"930777": {
"response_code": "100",
"acquisition_date": "2017-04-07 00:06:29",
"ancestor_id": "930777",
"affiliate": "1038"
},
"930783": {
"response_code": "100",
"acquisition_date": "2017-04-07 00:07:59",
"ancestor_id": "930783",
"affiliate": "1040"
},
"930788": {
"response_code": "100",
"acquisition_date": "2017-04-07 00:17:04",
"ancestor_id": "930788",
"affiliate": "1038"
},
"930791": {
"response_code": "100",
"acquisition_date": "2017-04-07 00:20:31",
"ancestor_id": "930791",
"affiliate": "1030"
},
"930793": {
"response_code": "100",
"acquisition_date": "2017-04-07 00:24:34",
"ancestor_id": "930793",
"affiliate": "1038"
}
}
}
您好我从API调用了以上返回的JSON。我想知道联盟的最佳方法是什么。我希望得到像
这样的结果Affiliate | Number
1038 | 3
1040 | 1
1030 | 1
有时返回API最多可能包含4000条记录。我认为必须有一个可以在短时间内完成工作的图书馆
由于
答案 0 :(得分:0)
您可以使用reduce
上的Object.keys
循环播放该对象并累积结果,如下所示:
var obj = {"response_code":"100","total_orders":"302","order_ids":"930777,930783,930788,930791,930793","data":{"930777":{"response_code":"100","acquisition_date":"2017-04-07 00:06:29","ancestor_id":"930777","affiliate":"1038"},"930783":{"response_code":"100","acquisition_date":"2017-04-07 00:07:59","ancestor_id":"930783","affiliate":"1040"},"930788":{"response_code":"100","acquisition_date":"2017-04-07 00:17:04","ancestor_id":"930788","affiliate":"1038"},"930791":{"response_code":"100","acquisition_date":"2017-04-07 00:20:31","ancestor_id":"930791","affiliate":"1030"},"930793":{"response_code":"100","acquisition_date":"2017-04-07 00:24:34","ancestor_id":"930793","affiliate":"1038"}}}
var result = Object.keys(obj.data).reduce(function(acc, key) { // for each key in the data object
var aff = obj.data[key].affiliate; // get the affiliate of the according object
if(acc[aff]) acc[aff]++; // if we already have have a counter for this affiliate (aff) then increment the value from the accumulator acc
else acc[aff] = 1; // otherwise start a counter for this affiliate (initialized with 1)
return acc;
}, {});
console.log(result);
答案 1 :(得分:0)
您可以遍历所有键并构建具有关联号码作为键和出现次数的对象作为值。
// jshint esnext: true
const example = {'response_code':'100','total_orders':'302','order_ids':'930777,930783,930788,930791,930793','data':{'930777':{'response_code':'100','acquisition_date':'2017-04-0700:06:29','ancestor_id':'930777','affiliate':'1038'},'930783':{'response_code':'100','acquisition_date':'2017-04-0700:07:59','ancestor_id':'930783','affiliate':'1040'},'930788':{'response_code':'100','acquisition_date':'2017-04-0700:17:04','ancestor_id':'930788','affiliate':'1038'},'930791':{'response_code':'100','acquisition_date':'2017-04-0700:20:31','ancestor_id':'930791','affiliate':'1030'},'930793':{'response_code':'100','acquisition_date':'2017-04-0700:24:34','ancestor_id':'930793','affiliate':'1038'}}};
const results = {};
Object.keys(example.data).forEach(key => {
const resultsEntry = results[example.data[key].affiliate];
if (resultsEntry === undefined) {
results[example.data[key].affiliate] = 1;
}
else {
results[example.data[key].affiliate]++;
}
});
console.log(results);
/* Console output formatting */
.as-console-wrapper { top: 0; }
答案 2 :(得分:0)
以下是使用下划线的示例:
var data = // Your json;
var groupedData = _.groupBy(data.data, function(d){return d.affiliate});
jsfiddle:http://jsfiddle.net/afj4dy6v/