如何更改数组Object中的属性值?

时间:2018-02-20 20:35:06

标签: javascript typescript ecmascript-6

我尝试使用 forEach 函数更改数组中每个属性的值,但没有任何运气。

这是我的阵列:

  this.panels = [
  { isRandomPanel  : false },
  { isMyPanel  : false },
  { isFavorite      : false },
  { isEatable : false }
  ]

我试图将每个属性的值更新为 true ,所以最后我可以得到这个:

 isRandomPanel = true
 isMyPanel  = true
 isFavorite = true
 isEatable = true

我试图使用forEach功能,但我被卡住了:

   this.panels.forEach(panel => panel.isRandomPanel = true);

有没有人知道如何使用纯Javascript,TypeScript或ES6实现这一点?

3 个答案:

答案 0 :(得分:1)

如果这些是对象上的唯一键,则可以迭代Object.keys(panel)并设置每个panel[key] = true,如下所示:

var panels = [
  { isRandomPanel  : false },
  { isMyPanel  : false },
  { isFavorite      : false },
  { isEatable : false }
];

// set all panel flags to true
panels.forEach(function (panel) {
  Object.keys(panel).forEach(function (key) {
    panel[key] = true;
  });
});

console.log(panels);

或者,缩短ES6语法:

panels.forEach(panel => Object.keys(panel).forEach(key => panel[key] = true));

答案 1 :(得分:1)

您需要对数组进行更新,从对象获取每个键并将该键的值设置为true。您可以使用Object.keysfor in循环来获取密钥:

this.panels.forEach(panel => {
  for(const key of Object.keys(panel))
    panel[key] = true
})

OR

this.panels.forEach(panel => {
  for(const key in panel)
    panel[key] = true
})

答案 2 :(得分:-1)

当您使用ES 6时,以下内容将起作用

panels.forEach(panel => Object.keys(panel).forEach(key => panel[key] = true));