基于字符串调用对象

时间:2018-01-23 12:46:33

标签: javascript node.js reactjs

我试图通过反应从我的节点后端调用一个对象,但我试图基于一个字符串这样做。因此,如果字符串是“Cat'”,我想访问Cat对象及其下的任何其他键/值。

代码的示例:

componentDidMount() {
    let catName = 'Cat' //this string is actually passed in
    this.callApi()
      .then(res => this.setState({ catsName: res.catName.name }))
                                 //catsName: res.Cat.name works
      .catch(err => console.log(err));
  }

  callApi = async () => {
    //lets say this example route has all animals in the world as objects
    const response = await fetch('/animals');
    const body = await response.json();

    if (response.status !== 200) throw Error(body.message);

    return body;
  };

我知道它不起作用,因为它是一个字符串,但试图转换字符串或对象也没有工作。我的节点知识,任何建议或线索都受到限制?或者这是不可能的,我称之为错?提前谢谢。

如果有帮助,此示例的节点后端的示例。所有动物的api文件中都有关键值(姓名,年龄,食草动物等):

app.get('/animals', (req, res) => {
  res.send({ Cat, Dog, Cougar, Wolf, etc.... });
});

3 个答案:

答案 0 :(得分:1)

你需要数组表示法。

res[catName].name

答案 1 :(得分:1)

res.catName.name转换为res[catName].name

答案 2 :(得分:1)

如果要访问对象中的动态键,则需要使用括号语法。

catsName: res[catName].name

请查看 Property accessors

的此文档