Код:

var cspaObj = {};
var associatedCspaList = responseData.data.associatedCspaList;
responseData.data.associatedCspaList = [];
angular.forEach(associatedCspaList, function (value, key) {
  cspaObj.clientId = value.slice(0, 4);
  cspaObj.systemId = value.slice(4, 8);
  cspaObj.principleId = value.slice(8, 12);
  cspaObj.agentId = value.slice(12, 16);
  responseData.data.associatedCspaList.push(cspaObj);
});

Ниже приведены связанные списки пользователей

 "associatedCspaList": [
  "1000100010001000",
  "2000200020002000",
  "3000300030003000",
  "9999100020003000",
  "9999999999999999"
]

Необходимо распечатать как ниже:

1000 1000 1000 1000
2000 2000 2000 2000
3000 3000 3000 3000
9999 1000 2000 3000
9999 9999 9999 9999

Но код выше напечатан только последний 9999 9999 9999 9999. Он не будет печатать оставшиеся значения, поэтому, пожалуйста, помогите мне в этом. Заранее спасибо.

0
Rahul Pawar 27 Фев 2018 в 08:47

4 ответа

Лучший ответ

Вы создаете только один объект и добавляете его несколько раз в свой список. Это приводит к тому, что все ссылки на один и тот же объект имеют одинаковые значения. Создавайте новый объект каждый раз:

var associatedCspaList = responseData.data.associatedCspaList;
responseData.data.associatedCspaList = [];
angular.forEach(associatedCspaList, function (value, key) {
  var cspaObj = {}; // Create the object here, not outside
  cspaObj.clientId = value.slice(0, 4);
  cspaObj.systemId = value.slice(4, 8);
  cspaObj.principleId = value.slice(8, 12);
  cspaObj.agentId = value.slice(12, 16);
  responseData.data.associatedCspaList.push(cspaObj);
});
1
Sami Kuhmonen 27 Фев 2018 в 06:03

Попробуйте этот код.

$scope.associatedCspaList = [
  "1000100010001000",
  "2000200020002000",
  "3000300030003000",
  "9999100020003000",
  "9999999999999999"
];

$scope.clientId = $scope.associatedCspaList[0].replace(/(\d{4})/g, '$1 ').replace(/(^\s+|\s+$)/, '');
$scope.systemId = $scope.associatedCspaList[1].replace(/(\d{4})/g, '$1 ').replace(/(^\s+|\s+$)/, '');
$scope.principleId = $scope.associatedCspaList[2].replace(/(\d{4})/g, '$1 ').replace(/(^\s+|\s+$)/, '');
$scope.agentId = $scope.associatedCspaList[3].replace(/(\d{4})/g, '$1 ').replace(/(^\s+|\s+$)/, '');
0
Rakesh Burbure 27 Фев 2018 в 06:00

Я думаю, что ваша переменная cspaObj должна быть внутри цикла.

var associatedCspaList = [
  "1000100010001001",
  "2000200020002000",
  "3000300030003000",
  "9999100020003000",
  "9999999999999999"
];

var associatedCspaListResponse = [];

angular.forEach(associatedCspaList, function (value, key) {
  var cspaObj = {};
  var output = "";
  cspaObj.clientId = value.slice(0, 4);
  cspaObj.systemId = value.slice(4, 8);
  cspaObj.principleId = value.slice(8, 12);
  cspaObj.agentId = value.slice(12, 16);
  
  // expected output
  console.log(cspaObj.clientId + " " + cspaObj.systemId + " " + cspaObj.principleId + " " + cspaObj.agentId );
  
  //response
  
  associatedCspaListResponse.push(cspaObj);
});
console.log("response");
console.log(associatedCspaListResponse);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
1
sinhavartika 27 Фев 2018 в 06:01

Запустите приведенный ниже код.

var cspaObj = {};
var associatedCspaList = responseData.data.associatedCspaList;
responseData.data.associatedCspaList = [];
associatedCspaList.map(function(value, key) {
  cspaObj.clientId = value.slice(0, 4);
  cspaObj.systemId = value.slice(4, 8);
  cspaObj.principleId = value.slice(8, 12);
  cspaObj.agentId = value.slice(12, 16);
  cspaObj.main = cspaObj.clientId + ' ' + cspaObj.systemId + ' ' +    cspaObj.principleId + ' ' + cspaObj.agentId;
  responseData.data.associatedCspaList.push(cspaObj.main);
});
console.log('data', responseData.data.associatedCspaList);
0
Garima 27 Фев 2018 в 06:15