Обновить значение поля массива, используя индекс поля в массиве Angularjs - PullRequest
0 голосов
/ 06 мая 2020
$scope.MyArray = [
  {id:'01', name:'test1', dept:'abc1', address: 'xyz1'},
  {id:'02', name:'test2', dept:'abc2', address: 'xyz2'},
  {id:'03', name:'test3', dept:'abc3', address: 'xyz3'}
];

Это мой список массивов, мне нужно обновить поле, используя индекс столбца,

например, у меня есть значение индекса [2], которое является полем dept.

Чтобы обновить значение поля как def в поле dept строки 01.

Ожидаемый результат:

$scope.MyArray = [
  {id:'01', name:'test1', dept:'def', address: 'xyz1'},
  {id:'02', name:'test2', dept:'abc2', address: 'xyz2'},
  {id:'03', name:'test3', dept:'abc3', address: 'xyz3'}
];

Ответы [ 2 ]

0 голосов
/ 06 мая 2020

Вам необходимо получить доступ к object с помощью функции javascript map, а затем вы можете использовать Object.keys для этого объекта для получения ключей и индекса.

Позже вы можете проверить этот индекс, используя if.

Вот рабочий пример:

    var MyArray = [
      {id:'01', name:'test1', dept:'abc1', address: 'xyz1'},
      {id:'02', name:'test2', dept:'abc2', address: 'xyz2'},
      {id:'03', name:'test3', dept:'abc3', address: 'xyz3'}
    ];

    var changedArray = MyArray.map((item, index) => {
      Object.keys(item).map((key, i) => {
        if(i === 2) {
            return item[key] = 'test' //you can add dynamic value instead of 'test'.
        }
      })
      return item;
    });

   console.log(changedArray);

вывод:

changedArray = [
  { id: '01', name: 'test1', dept: 'test', address: 'xyz1' },
  { id: '02', name: 'test2', dept: 'test', address: 'xyz2' },
  { id: '03', name: 'test3', dept: 'test', address: 'xyz3' }
]
0 голосов
/ 06 мая 2020

Перед доступом к dept вам необходимо получить доступ к object, где вы хотите внести изменения.

Вы можете использовать map, который создаст новый массив и внутреннюю проверку обратного вызова массива для id объекта, и если это совпадает, обновите dept этого объекта

var MyArray = [{
    id: '01',
    name: 'test1',
    dept: 'abc1',
    address: 'xyz1'
  },
  {
    id: '02',
    name: 'test2',
    dept: 'abc2',
    address: 'xyz2'
  },
  {
    id: '03',
    name: 'test3',
    dept: 'abc3',
    address: 'xyz3'
  }
];

const newArray = MyArray.map((item, index) => {
  if (item.id === '01') {
    return Object.assign({}, item, {
      dept: 'newDept'
    })
  }
  return item;
});

console.log(newArray)
...