如何使用for loop / foreach更改JSON的值?

时间:2018-01-15 10:36:51

标签: javascript

我试图根据密钥更改json的值,但我的循环不起作用

这里是代码:



var duce2 = [{
    "pages": "foo1",
    "hasil": ""
  },
  {
    "pages": "foo2",
    "hasil": ""
  },
  {
    "pages": "foo3",
    "hasil": ""
  },
  {
    "pages": "foo4",
    "hasil": ""
  },
  {
    "pages": "foo5",
    "hasil": ""
  },
  {
    "pages": "foo6",
    "hasil": ""
  }
];

for (let key in this.duce2) {
  console.log("jalan ga fornya");
  if (this.duce2[key].pages == 'foo2') {
    console.log("jalan ga ifnya");
    this.duce2[key].hasil = '1';
  }
}
console.log(duce2);




我上面的代码做错了吗? console.log不会显示在forif

编辑:我的chrome dev控制台只显示了这个

enter image description here

2 个答案:

答案 0 :(得分:0)

我不确定为什么在代码中使用“this.duce2”。 但是,一些有用的建议:

  • 变量应使用最小允许范围声明。而不是使用“var”声明数组,您应该更喜欢“const”
  • 不应使用for ... in构造(用于对象属性)遍历
  • 数组。相反,您应该更喜欢使用forEach方法。

结果将是:

const duce2 = [ ... ];
duce2.forEach((elem) => {
  if (elem.pages === 'foo2') {
    elem.hasil = '1';
  }
});

答案 1 :(得分:0)

使用duce2而不是this.duce2,

你可以像这样迭代。

function save() {
  ...
}

function edit() {
  ...
}

const buttons = [
  {
    label: 'Save',
    method: save
  },
  {
    label: 'Edit',
    method: edit
  }
];

const Header = () => (<ButtonGroup buttons={buttons} />);

for / in语句循环遍历对象的属性。 希望它有所帮助..!