使用Angular.js数组中的字段索引更新数组字段值

时间:2020-05-06 15:11:56

标签: javascript arrays angularjs angularjs-ng-repeat

$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的{​​{1}}的字段处将字段值更新为dept

预期结果是

01

2 个答案:

答案 0 :(得分:0)

在访问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)

答案 1 :(得分:0)

您需要使用JavaScript object函数访问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' }
]