Я хочу переставить объект в AngularJS, который выглядит следующим образом:

var persons = [
  {socialnum : "123", pname: "Malcom Reynolds"},
  {socialnum : "456", pname: "Kaylee Frye"},
  {socialnum : "789", pname: "Jayne Cobb"}
];

Результат должен быть таким:

var persons = [
  {socialnum : "123", pname: "123 - Malcom Reynolds"},
  {socialnum : "456", pname: "456 - Kaylee Frye"},
  {socialnum : "789", pname: "789 - Jayne Cobb"}
];

То, что я попробовал, это:

angular.forEach(persons , function (key, value) {    
this.push(values.socialnum + ' - ' + values.pname);    
}, persons );

Я не получил вывод, который хотел

0
yanivz 5 Май 2020 в 17:14

2 ответа

Вы можете использовать карту, чтобы сделать этот.

let newArray = persons.map(value => {
  return {socialnum: value.socialnum, pname: value.socialnum + ' - ' + value.pname};
});
0
Igor 5 Май 2020 в 14:20

Попробуйте код ниже .... так как у вас уже есть массив и вы пытаетесь редактировать его значение, нет необходимости добавлять функцию push. Просто нужно обновить значение, как указано ниже

var persons = [
  {socialnum : "123", pname: "Malcom Reynolds"},
  {socialnum : "456", pname: "Kaylee Frye"},
  {socialnum : "789", pname: "Jayne Cobb"}
];


angular.forEach(persons , function (key, value) {  
key['pname'] = key['socialnum']+' - '+ key['pname']   
}, persons );
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.7.5/angular.min.js"></script>
0
Deepu 5 Май 2020 в 19:49