JJN*_*L77 4 javascript reactjs 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);
});
Run Code Online (Sandbox Code Playgroud)
我在React的返回方法中使用了这个函数。
{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>
)}
Run Code Online (Sandbox Code Playgroud)
我有一个问题,我只想要一个特定的值,Object.values(item)给出所有值,当我使用Object.values(item[key])或Object.values(item[0])我得到:
TypeError: undefined is not an object (evaluating 'Object.keys(item[0]') 或 TypeError: undefined is not an object (evaluating '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
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题,我只能从中得到一个特定的对象。
<Text>Object.values(item)</Text>
Run Code Online (Sandbox Code Playgroud)
给出:
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
Run Code Online (Sandbox Code Playgroud)
小智 5
请参考下面的例子...
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)); // Array ['a', 'b', 'c']
Run Code Online (Sandbox Code Playgroud)
所以在你的情况下,
如果你使用 like Object.values(item)// item必须是对象
如果你使用 like Object.values(item[key])// item[key]必须是对象
如果你使用 like Object.values(item[0])// item[0]必须是对象
因此,Object.values()或Object.keys()内部的任何内容都必须是对象
soitem[key]或item[0]必须
在代码中评估为对象,undefined因此只会发生以下错误
类型错误:未定义不是一个对象(评估 Object.keys(item[key]))
类型错误:未定义不是一个对象(评估 Object.keys(item[0]))
根据您的需要,现在您需要使用以下之一:
Object.values(item)[0]或Object.values(item)[1](静态)Object.values(item).filter((val,ind) => {})(基于条件)Object.values(item).map((val,ind) => {})(如果你想使用全部)希望这个详细的解释对您有所帮助。
| 归档时间: |
|
| 查看次数: |
23728 次 |
| 最近记录: |