从react-native中的数组中的对象获取密钥

constructor(props) {

    super(props);

    this.state = ({

        childData: [],

        test: []

    });

}


componentDidMount() {

    let userId = firebase.auth().currentUser.uid;

    firebase.database().ref('poolog/' + userId).on('value', (snapshot) => {

       let test = [];

       snapshot.forEach((childSnapshot) => {

          let childKey = childSnapshot.key;

          test.push(snapshot.val());

        });

        this.setState({childData: test});

        // console.log(this.state.childData);

    });

我在React的return方法中使用了这个函数。


 {this.state.childData.map((item, key) =>

     <View key={key}>

        {console.log(Object.values(item) + 'test')}

        <Text>{Object.keys(item)}</Text>

        {Object.values(item).map((value, index) =>

          <View></View>

        )}

     </View>

  )}

我有一个问题,我只想要一个特定的值,Object.values(item)给出所有的值,当我使用Object.values(item[key])或Object.values(item[0])得到时:


TypeError:undefined不是对象(评估'Object.keys(item [0]')或TypeError:undefined不是对象(评估'Object.keys(item [key]')


并{console.log(Object.values(item) + 'test')}给出以下输出:


[object Object],[object Object],[object Object],[object Object]test

[object Object],[object Object],[object Object],[object Object]test

[object Object],[object Object],[object Object],[object Object]test

[object Object],[object Object],[object Object],[object Object]test

我该如何解决这个问题,我只能从中得到一个特定的对象。


<Text>Object.values(item)</Text>

得到:


    10-1-201910-5-2019-10-9-2019-9-5-2019

    10-1-201910-5-2019-10-9-2019-9-5-2019

    10-1-201910-5-2019-10-9-2019-9-5-2019

    10-1-201910-5-2019-10-9-2019-9-5-2019


守着星空守着你
浏览 819回答 3
3回答

米脂

请参考下面的例子......const obj1 = {&nbsp;a:'hello',b:25,c:['apple','mango']&nbsp;};的console.log(Object.values(OBJ1));&nbsp;// Array ['hello',25,Array ['apple','mango']]&nbsp;console.log(Object.keys(obj1));&nbsp;//数组['a','b','c']所以在你的情况下,如果你使用像Object.values(item)//&nbsp;item必须是对象如果你使用像Object.values(item[key])//&nbsp;item [key]必须是对象如果你使用像Object.values(item[0])//&nbsp;item [0]必须是对象因此,Object.values()或Object.keys()内部的任何内容都必须是对象所以item[key]或item[0]必须在你的代码中评估对象,它只评估undefined错误发生TypeError:undefined不是对象(评估Object.keys(item [key]))TypeError:undefined不是对象(评估Object.keys(item [0]))根据您的需要,现在您需要使用以下其中一项:Object.values(item)[0]或Object.values(item)[1](静态)Object.values(item).filter((val,ind) => {})&nbsp;(基于条件)Object.values(item).map((val,ind) => {})&nbsp;(如果你想全部使用)希望这个详细解释可以帮到你。

临摹微笑

您可以使用object.keys获取特定对象的键该Object.keys() ,因为我们有一个正常的循环get方法返回给定对象本身的属性名称的数组,以相同的顺序。const object1 = {&nbsp; a: 'somestring',&nbsp; b: 42,&nbsp; c: false};console.log(Object.keys(object1));// expected output: Array ["a", "b", "c"]
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript