如何将Foreach数据用作“ this”

时间:2019-08-20 15:31:01

标签: javascript

我正试图遍历这些数据,为每个数据赋予价值。

const key = Object.keys(response.data)
key.forEach((index,element) => {
    // let query = "this."+element
    this.element = response.data.element
});

输出应为

this.name = response.data.name
this.password= response.data.password

...

1 个答案:

答案 0 :(得分:3)

您的代码有几个问题,都与访问this无关。

首先,您的参数在回调中的顺序错误。第一个参数是元素,第二个参数是索引(也许您已经习惯使用jQuery了-它在.each().map()方法中使用相反的顺序)。

第二,您没有正确使用元素。 .element意味着访问字面名称为element的属性,它不使用变量element的值。您必须使用[element]动态访问属性;参见Dynamically access object property using variable

const key = Object.keys(response.data)
key.forEach((element) => {
    this[element] = response.data[element]
});
class MyClass {
  copyProps(response) {
    const key = Object.keys(response.data)
    key.forEach((element) => {
      this[element] = response.data[element]
    });
  }
}

obj = new MyClass;
obj.copyProps({
  data: {
    name: "MyName",
    age: 10
  }
});
console.log(obj);

您还可以使用Object.assign()复制属性:

Object.assign(this, response.data);