如何更改数组中的属性内容?

时间:2016-10-26 11:27:57

标签: javascript angularjs

我有这个数组:

var arr=[{Id:'3',Status:True, ObjectId:'23'},
         {Id:'4',Status:False, ObjectId:'5'},
         {Id:'5',Status:True, ObjectId:'78'},
         {Id:'6',Status:False, ObjectId:'54'},
         {Id:'7',Status:True, ObjectId:'85'}]

状态为Boolean类型。

在arr变量中,我需要更改所有属性的内容。

StatusTrue的位置我需要将其设置为固定。

StatusFalse的位置我需要将其设置为已损坏。

这是理想的结果:

var arr=[{Id:'3',Status:Fixed, ObjectId:'23'},
         {Id:'4',Status:Damaged, ObjectId:'5'},
         {Id:'5',Status:Fixed, ObjectId:'78'},
         {Id:'6',Status:Damaged, ObjectId:'54'},
         {Id:'7',Status:Fixed, ObjectId:'85'}] 

实施它的最佳方法是什么?

3 个答案:

答案 0 :(得分:4)

尝试这种方法

使用您在tags

中提到的Angular.ForEach

var arr=[{Id:'3',Status:true, ObjectId:'23'},
             {Id:'4',Status:false, ObjectId:'5'},
             {Id:'5',Status:true, ObjectId:'78'},
             {Id:'6',Status:false, ObjectId:'54'},
             {Id:'7',Status:true, ObjectId:'85'}]

angular.forEach(arr, function(value, key) {
  value.Status = value.Status ? 'Fixed' : 'Damaged';
});

console.log(arr);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

或者没有Angular你可以做

var arr=[{Id:'3',Status:true, ObjectId:'23'},
         {Id:'4',Status:false, ObjectId:'5'},
         {Id:'5',Status:true, ObjectId:'78'},
         {Id:'6',Status:false, ObjectId:'54'},
         {Id:'7',Status:true, ObjectId:'85'}]

arr.forEach(item => item.Status = item.Status ? 'Fixed' : 'Damaged');

console.log(arr);

正如评论中提到的,这种方法在IE 8中不起作用

enter image description here

答案 1 :(得分:1)

使用Array.prototype.map(...)

IE8不支持此功能

var arr = [{
  "Id": '3',
  "Status": true,
  "ObjectId": '23'
}, {
  "Id": '4',
  "Status": false,
  "ObjectId": '5'
}, {
  "Id": '5',
  "Status": true,
  "ObjectId": '78'
}, {
  "Id": '6',
  "Status": false,
  "ObjectId": '54'
}, {
  "Id": '7',
  "Status": true,
  "ObjectId": '85'
}];

arr.map(function(item){
  item.Status = item.Status ? "Fixed" : "Damage";
});

console.log(arr);

答案 2 :(得分:0)

非ES6:

arr.map(function(item) {
    item.Status = item.Status ? 'Fixed' : 'Damaged';
    return item;
})