按react native中的键值迭代JSON数组
是否仍然可以从json数组中获取对象中的值。我需要根据另一个值从对象中获取一个值 我的代码如下:按react native中的键值迭代JSON数组,json,react-native,Json,React Native,是否仍然可以从json数组中获取对象中的值。我需要根据另一个值从对象中获取一个值 我的代码如下: export default class StandardComp extends Component { constructor(props) { super(props) this.state = { id: '', email: 'abc@gmail.com', dataSource: [
export default class StandardComp extends Component {
constructor(props) {
super(props)
this.state = {
id: '',
email: 'abc@gmail.com',
dataSource: []
};
}
componentDidMount(){
fetch(someURL, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then((response) => response.json())
.then((responseJson) => {
this.setState({dataSource: responseJson})
//dunno what to do here
})
.catch((error) => {
console.error(error);
})
}
}
我的回答是这样的。然后提供键值abc@gmail.com,如何获取字符串abcdef
[
{
"id": "qwerty",
"email": "cat@gmail.com",
"name": "cat"
},
{
"id": "abcdef",
"email": "abc@gmail.com",
"name": "abc"
}
{
"id": "owowao",
"email": "dog@gmail.com",
"name": "dog"
},
]
提前谢谢。代码将取决于您如何获得值abc@gmail.com. 您可能需要通过道具将其作为参数传递给componentDidMount?或者将其提取到单独的函数中。这要看情况而定 这是我说的最基本的方式
const value = responseJson.filter(obj => obj.email === 'abc@gmail.com')[0].id
在这里,它是在您的类中实现的
export default class StandardComp extends Component {
...
componentDidMount(){
fetch(someURL, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then((response) => response.json())
.then((responseJson) => {
this.setState({ dataSource: responseJson })
const { email } = this.state
const value = responseJson.filter(obj => obj.email === email)[0].id
})
.catch((error) => {
console.error(error);
})
}
}代码将取决于您如何获得值abc@gmail.com. 您可能需要通过道具将其作为参数传递给componentDidMount?或者将其提取到单独的函数中。这要看情况而定 这是我说的最基本的方式
const value = responseJson.filter(obj => obj.email === 'abc@gmail.com')[0].id
在这里,它是在您的类中实现的
export default class StandardComp extends Component {
...
componentDidMount(){
fetch(someURL, {
method: 'GET',
headers: {
'Content-Type': 'application/json'
}
})
.then((response) => response.json())
.then((responseJson) => {
this.setState({ dataSource: responseJson })
const { email } = this.state
const value = responseJson.filter(obj => obj.email === email)[0].id
})
.catch((error) => {
console.error(error);
})
}
}找到与电子邮件匹配的元素并返回id 常数数据=[ { id:qwerty, 电邮:cat@gmail.com, 姓名:猫 }, { id:abcdef, 电邮:abc@gmail.com, 姓名:abc }, { id:Owao, 电邮:dog@gmail.com, 姓名:狗 }, ]; const findIdByEmail=数据,email=>{ const el=data.findel=>el.email==email;//可能返回“未定义”` 返回el&&el.id;//因此检查结果为truthy并提取'id'` } console.logfindIdByEmaildata,'cat@gmail.com'; console.logfindIdByEmaildata,'abc@gmail.com';
console.logfindIdByEmaildata,“胡言乱语” 查找与电子邮件匹配的元素并返回id 常数数据=[ { id:qwerty, 电邮:cat@gmail.com, 姓名:猫 }, { id:abcdef, 电邮:abc@gmail.com, 姓名:abc }, { id:Owao, 电邮:dog@gmail.com, 姓名:狗 }, ]; const findIdByEmail=数据,email=>{ const el=data.findel=>el.email==email;//可能返回“未定义”` 返回el&&el.id;//因此检查结果为truthy并提取'id'` } console.logfindIdByEmaildata,'cat@gmail.com'; console.logfindIdByEmaildata,'abc@gmail.com';
console.logfindIdByEmaildata,“胡言乱语”;谢谢,我已经有了价值abc@gmail.com存储在this.state.emailFYI中,如果没有与筛选器匹配的元素,筛选器将返回空数组,因此您不能假设有第零个索引返回id。我对您的答案进行了投票,因为这是一个更好的实现。感谢您帮助我识别此edgecase!谢谢,我已经有了价值abc@gmail.com存储在this.state.emailFYI中,如果没有与筛选器匹配的元素,筛选器将返回空数组,因此您不能假设有第零个索引返回id。我对您的答案进行了投票,因为这是一个更好的实现。感谢您帮助我识别此edgecase!