Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 角网格中的数组映射_Javascript_Json_Angularjs - Fatal编程技术网

Javascript 角网格中的数组映射

Javascript 角网格中的数组映射,javascript,json,angularjs,Javascript,Json,Angularjs,我的JSON对象 $scope.selectedItems ={ "RECORDS": [ { "Id": 23040035705987, "arriveddate": "2015/04/24", "expirationDate": null, "replacedDate": null, "processDate": "2015/04/24"

我的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"
        }
    ]
}
我在尝试什么

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。流程日期2015年4月24日与以83,84,87结尾的id匹配,流程日期2015年4月27日与以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
任何帮助都将不胜感激。

您希望为每个日期创建数组,因此在创建
id
数组时应考虑该日期

选中此项:

首先,必须从第一个数组中找到项索引,然后将元素添加到适当的位置

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);
}

这应该可以做到:

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);
    }
}
var结果={
processDate:[],
Id:[]
};
对于(变量i=0;i<$scope.selectedItems.RECORDS.length;i++){
var record=$scope.selectedItems.RECORDS[i],
index=result.processDate.indexOf(record.processDate);
如果(索引==-1){
result.processDate.push(record.processDate);
result.Id.push([record.Id]);
}否则{
result.Id[index].push(record.Id);
}
}
尝试以下方法:

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);
            }

        });