为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

守着星空守着你 2019-04-17 18:15:30
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
查看完整描述

3 回答

?
米脂

TA贡献1836条经验 获得超3个赞

请参考下面的例子......

const obj1 = { 
a:'hello',
b:25,
c:['apple','mango'] 
};

的console.log(Object.values(OBJ1)); // Array ['hello',25,Array ['apple','mango']] 
console.log(Object.keys(obj1)); //数组['a','b','c']

所以在你的情况下,
如果你使用像Object.values(item)// item必须是对象
如果你使用像Object.values(item[key])// item [key]必须是对象
如果你使用像Object.values(item[0])// 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) => {}) (基于条件)

  • Object.values(item).map((val,ind) => {}) (如果你想全部使用)

希望这个详细解释可以帮到你。


查看完整回答
反对 回复 2019-05-17
?
临摹微笑

TA贡献1982条经验 获得超2个赞

您可以使用object.keys获取特定对象的键


该Object.keys() ,因为我们有一个正常的循环get方法返回给定对象本身的属性名称的数组,以相同的顺序。


const object1 = {

  a: 'somestring',

  b: 42,

  c: false

};


console.log(Object.keys(object1));

// expected output: Array ["a", "b", "c"]


查看完整回答
反对 回复 2019-05-17
  • 3 回答
  • 0 关注
  • 817 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信