Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
按react native中的键值迭代JSON数组_Json_React Native - Fatal编程技术网

按react native中的键值迭代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: [

是否仍然可以从json数组中获取对象中的值。我需要根据另一个值从对象中获取一个值

我的代码如下:

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!