我将从包含currentDataResult和pastDataResult的api中返回一个对象数组。
[
{
"sectionCurrentDataResult": [
{
"section_id": 14785,
"subdivision_name": "Stratton Woods",
},
{
"section_id": 14790,
"subdivision_name": "Stratton Woods",
},
{
"section_id": 14791,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14792,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14781,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14786,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14787,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14788,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14782,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14783,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 14784,
"subdivision_name": "Stratton Woods"
},
{
"section_id": 5326,
"subdivision_id": 1439,
"subdivision_name": "Stratton Woods"
}
]
},
{
"sectionPastDataResult": [
{
"section_id": 5326,
"price_min": 177,
"price_max": 235
},
{
"section_id": 14785,
"price_min": 190,
"price_max": 220
},
{
"section_id": 14786,
"price_min": 238,
"price_max": 292
},
{
"section_id": 14788,
"price_min": 186,
"price_max": 205
},
{
"section_id": 14790,
"price_min": 150,
"price_max": 269
},
{
"section_id": 14783,
"price_min": 150,
"price_max": 260
},
{
"section_id": 14787,
"price_min": 90,
"price_max": 90
},
{
"section_id": 14792,
"price_min": 177,
"price_max": 235
},
{
"section_id": 14791,
"price_min": 145,
"price_max": 221
},
{
"section_id": 14784,
"price_min": 148,
"price_max": 186
},
{
"section_id": 14781,
"price_min": 155,
"price_max": 200
},
{
"section_id": 14782,
"price_min": 150,
"price_max": 170
}
]
}
]我需要将匹配的pastDataObject(by section_id)对象作为嵌套数组推入currentDataResult对象。这就是它所需要的样子
"sectionCurrentDataResult": [
{
"section_id": 14785,
"subdivision_name": "Stratton Woods",
"sectionHistory":[{
"section_id": 14785,
"price_min": 190,
"price_max": 220
}]
},
{
"section_id": 14790,
"subdivision_name": "Stratton Woods",
"sectionHistory":[{
"section_id": 14790,
"price_min": 150,
"price_max": 269
}]
},
etc....
]我已经创建了一个服务,它接受当前和过去的数据结果,并重新排序过去的数据结果以匹配当前。我需要帮助的是将过去的数据数组推到当前的数据对象中。现在,它不正确地将整个过去的数据数组推入到当前数据数组中的第一个对象中,我用我的代码设置了一个柱塞。
柱塞
app.controller('MainCtrl', function($scope,bigEnchilada,inputHistorySvc) {
for (var i = 0; i < bigEnchilada[0].sectionCurrentDataResult.length; i++) {
bigEnchilada[0].sectionCurrentDataResult[i].sectionHistory = inputHistorySvc.historyInputs(bigEnchilada);
}
$scope.sections = bigEnchilada[0].sectionCurrentDataResult;
});发布于 2016-01-15 14:19:38
这就是你要找的吗?
var app = angular.module('angularjs-starter', []);
app.controller('MainCtrl', function($scope,bigEnchilada,inputHistorySvc) {
var list = inputHistorySvc.historyInputs(bigEnchilada);
for (var i = 0; i < bigEnchilada[0].sectionCurrentDataResult.length; i++){
for (var j = 0; j < list.length; j++ ) {
if(bigEnchilada[0].sectionCurrentDataResult[i].section_id == list[j].section_id){
bigEnchilada[0].sectionCurrentDataResult[i].sectionHistory = list[j];
}
}
}
$scope.sections = bigEnchilada[0].sectionCurrentDataResult;
});输出:
[
{
"section_id": 14785,
"subdivision_name": "Stratton Woods",
"sectionHistory": {
"section_id": 14785,
"price_min": 190,
"price_max": 220
}
},
{
"section_id": 14790,
"subdivision_name": "Stratton Woods",
"sectionHistory": {
"section_id": 14790,
"price_min": 150,
"price_max": 269
}
},
{
"section_id": 14791,
"subdivision_name": "Stratton Woods",
"sectionHistory": {
"section_id": 14791,
"price_min": 145,
"price_max": 221
}
},等。
发布于 2016-01-15 14:31:24
var inputHistory = inputHistorySvc.historyInputs(bigEnchilada);
for (var i = 0; i < bigEnchilada[0].sectionCurrentDataResult.length; i = i + 1) {
for (x = 0; x < inputHistory.length; x = x + 1) {
if (bigEnchilada[0].sectionCurrentDataResult[i].section_id === inputHistory[x].section_id) {
bigEnchilada[0].sectionCurrentDataResult[i].sectionHistory = inputHistory[x];
}
}
}
$scope.sections = bigEnchilada[0].sectionCurrentDataResult;发布于 2016-01-15 14:35:51
您可以使用一个临时对象和两个分隔的循环。一个用于获取所有引用,另一个用于将数据分配给引用。这个解决方案中的大O:O(n)。
var data = [{ "sectionCurrentDataResult": [{ "section_id": 14785, "subdivision_name": "Stratton Woods", }, { "section_id": 14790, "subdivision_name": "Stratton Woods", }, { "section_id": 14791, "subdivision_name": "Stratton Woods" }, { "section_id": 14792, "subdivision_name": "Stratton Woods" }, { "section_id": 14781, "subdivision_name": "Stratton Woods" }, { "section_id": 14786, "subdivision_name": "Stratton Woods" }, { "section_id": 14787, "subdivision_name": "Stratton Woods" }, { "section_id": 14788, "subdivision_name": "Stratton Woods" }, { "section_id": 14782, "subdivision_name": "Stratton Woods" }, { "section_id": 14783, "subdivision_name": "Stratton Woods" }, { "section_id": 14784, "subdivision_name": "Stratton Woods" }, { "section_id": 5326, "subdivision_id": 1439, "subdivision_name": "Stratton Woods" }] }, { "sectionPastDataResult": [{ "section_id": 5326, "price_min": 177, "price_max": 235 }, { "section_id": 14785, "price_min": 190, "price_max": 220 }, { "section_id": 14786, "price_min": 238, "price_max": 292 }, { "section_id": 14788, "price_min": 186, "price_max": 205 }, { "section_id": 14790, "price_min": 150, "price_max": 269 }, { "section_id": 14783, "price_min": 150, "price_max": 260 }, { "section_id": 14787, "price_min": 90, "price_max": 90 }, { "section_id": 14792, "price_min": 177, "price_max": 235 }, { "section_id": 14791, "price_min": 145, "price_max": 221 }, { "section_id": 14784, "price_min": 148, "price_max": 186 }, { "section_id": 14781, "price_min": 155, "price_max": 200 }, { "section_id": 14782, "price_min": 150, "price_max": 170 }] }];
void function () {
var o = {};
data[0].sectionCurrentDataResult.forEach(function (a) {
o[a.section_id] = a;
});
data[1].sectionPastDataResult.forEach(function (a) {
o[a.section_id].sectionHistory = [a];
});
}();
document.write('<pre>' + JSON.stringify(data, 0, 4) + '</pre>');
https://stackoverflow.com/questions/34812670
复制相似问题