我的JSON对象
$scope.selectedItems ={
"RECORDS": [
{
"Id": 23040035705987,
"arriveddate": "2015/04/24",
"expirationDate": null,
"replacedDate": null,
"processDate": "2015/04/24"
},
{
"Id": 23070041800654,
"arriveddate": "2015/04/24",
"expirationDate": null,
"replacedDate": null,
"processDate": "2015/04/27"
},
{
"Id": 23040035705984,
"arriveddate": "2015/04/24",
"expirationDate": null,
"replacedDate": null,
"processDate": "2015/04/24"
},
{
"Id": 23040035705983,
"arriveddate": "2015/04/24",
"expirationDate": null,
"replacedDate": null,
"processDate": "2015/04/24"
}
]
}
我在尝试什么
对于我所拥有的每个独特的过程日期,我需要在下面提到的对象中的单独对象中使用相应的ID,过程日期24/04/2015与以83,84,87结尾的过程日期和过程日期27/04相匹配/ 2015匹配以54结尾的id
我期望的JSON对象
{
"processDate": [
"2015/04/24",
"2015/04/27"
],
"Id": [
[
23040035705983,
23040035705984,
23040035705987
],
[
23070041800654
]
]
}
我的尝试
angular.forEach($scope.selectedItems.RECORDS, function ( item ) {
$scope.ProcessDate = item.processDate;
if($scope.processDatesSelected.indexOf($scope.ProcessDate) == -1){
$scope.processDatesSelected.push($scope.ProcessDate);
}
if($scope.processDatesSelected.indexOf($scope.ProcessDate) != -1 && $scope.id.indexOf(item.Id) == -1 ){
$scope.id.push(item.Id);
}
});
$scope.changesSelected.push({processDate:$scope.processDatesSelected,Ids:$scope.id});
console.log(JSON.stringify($scope.changesSelected));
问题是id没有相应的映射,我为同一个创建了一个plunker(http://plnkr.co/edit/mkLXdOKayaqyDDDheFeu?p=preview) 任何帮助将不胜感激。
答案 0 :(得分:1)
尝试这种方式:http://plnkr.co/edit/LS40YJR9X0OAqBTIP2lZ?p=preview
angular.forEach($scope.selectedItems.RECORDS, function ( item ) {
$scope.ProcessDate = item.processDate;
var i=$scope.processDatesSelected.indexOf($scope.ProcessDate);
if(i == -1){
i=$scope.processDatesSelected.length;
$scope.processDatesSelected.push($scope.ProcessDate);
$scope.id[i]=[];
}
if(i != -1 && $scope.id[i].indexOf(item.Id) == -1 ){
$scope.id[i].push(item.Id);
}
});
答案 1 :(得分:0)
您想为每个日期创建数组,因此您应该在创建id
数组期间的那个日期使用int帐户
检查一下: http://plnkr.co/edit/vrig4P9SgZh8Kk7BkyEt?p=preview
首先,您必须从第一个数组中找到项目索引,然后将您的元素添加到正确的位置。
var processDateIndex = $scope.processDatesSelected.indexOf($scope.ProcessDate);
if(processDateIndex != -1 && $scope.id.indexOf(item.Id) == -1 ){
if ($scope.id.length < processDateIndex+1)
{
$scope.id.push([]);
}
$scope.id[processDateIndex].push(item.Id);
}
你也可以使用这样的结构。它可以帮助您轻松维护此系列:
{
"processDate": [
{
Date: "2015/04/24",
Ids: [
23040035705983,
23040035705984,
23040035705987
]
},
{
Date: "2015/04/27",
Ids: [
23070041800654
]
}
]
}
答案 2 :(得分:0)
这应该可以解决问题:
var result = {
processDate: [],
Id: []
};
for(var i = 0; i < $scope.selectedItems.RECORDS.length; i++) {
var record = $scope.selectedItems.RECORDS[i],
index = result.processDate.indexOf(record.processDate);
if(index === -1) {
result.processDate.push(record.processDate);
result.Id.push([record.Id]);
} else {
result.Id[index].push(record.Id);
}
}