arrays - 如何从带有条件的 React Native 中的 API 数组结果中获取记录?
问题描述
这是来自 API 的结果 JSON 文件:
{
"data": [
{
"recordid": "8888abc",
"accountno": "00-00-00000-00007-00",
"tag": "govid",
"filename": "gov_id.png",
"path": "C:\\MOBILEAPP\\governmentid/gov_id.png",
"ext": ".png",
"posted_dt": "12/11/2019 10:38:20 AM"
},
{
"recordid": "8888abc",
"accountno": "00-00-00000-00007-00",
"tag": "compid",
"filename": "compid.jpg",
"path": "C:\\MOBILEAPP\\compid/cid.jpg",",
"ext": ".jpg",
"posted_dt": "12/11/2019 10:38:20 AM"
}
],
"error_message": "Successfully retrieved.",
"is_success": true,
"requested_on": "12/18/2019 2:14:27 PM"
}
我需要将 tag = 'govid' 的路径放入变量中,因为它在另一个 API 获取的标头中使用。
async getProfilePhotoPath(token) {
//membid is recordid
let membid = await AsyncStorage.getItem(MEMBER_ID);
let resp2 = await fetch("https://api/files",
{
method: 'GET',
headers: {
"Authorization": "Bearer " + token,
"MemberID": membid,
'Content-Type': 'application/json;charset=UTF-8',
},
},
)
.then(resp2 => {
let respImg = resp2.json();
varImagePath = "should contain data.path where tag = 'govid'"
console.log('This is respImg values',respImg)
return respImg;
})
.catch(error => {
alert('Error in resp2 imgpath!' + error);
});
}
async getProfilePhoto() {
let token = await AsyncStorage.getItem(ACCESS_TOKEN);
this.getProfilePhotoPath(token);
let resp = await fetch("https://api/filepathtoimage", {
headers: {
"Authorization": "Bearer " + token,
"ImagePath": varImagePath,
}
})
let respBlob = await resp.blob();
let reader = new FileReader()
reader.readAsDataURL(respBlob)
reader.onload = () => {
this.setState({ imgsrc: reader.result })
}
}
console.log('这是 respImg 值',respImg) 返回:
This is respImg values
Promise {_40: 0, _65: 0, _55: null, _72: null}
_40: 1
_65: 1
_55:
data: Array(2)
0: {recordid: "8888abc", accountno: "00-00-00000-00007-00", tag: "govid", filename: "gov_id.png", path: "C:\\MOBILEAPP\\governmentid/gov_id.png", …}
1: {recordid: "8888abc", accountno: "00-00-00000-00007-00", tag: "compid", filename: "compid.jpg", path: "C:\\MOBILEAPP\\compid/cid.jpg", …}
length: 2
__proto__: Array(0)
error_message: "Successfully retrieved."
is_success: true
requested_on: "12/18/2019 3:10:32 PM"
__proto__: Object
_72: null
__proto__: Object
如何在varImagePath上赋值(在此示例中应为' C:\MOBILEAPP\governmentid/gov_id.png ')?
解决方案
只需使用过滤器:
let filterString = 'govid';
const result = arr.filter(f => f.tag == filterString);
一个例子:
let arr = [
{
"recordid": "8888abc",
"accountno": "00-00-00000-00007-00",
"tag": "govid",
"filename": "gov_id.png",
"path": "C:\\MOBILEAPP\\governmentid/gov_id.png",
"ext": ".png",
"posted_dt": "12/11/2019 10:38:20 AM"
},
{
"recordid": "8888abc",
"accountno": "00-00-00000-00007-00",
"tag": "compid",
"filename": "compid.jpg",
"path": "C:\\MOBILEAPP\\compid/cid.jpg",
"ext": ".jpg",
"posted_dt": "12/11/2019 10:38:20 AM"
}
]
let filterString = 'govid';
const result = arr.filter(f => f.tag == filterString);
console.log(result);
更新:
在您的回复中:
then(resp2 => {
let respImg = resp2.json();
let arr = respImg.data;
let filterString = 'govid';
const result = arr.filter(f => f.tag == filterString);
return respImg;
})
推荐阅读
- python-2.7 - 如果不正确,熊猫应用 lambda
- c# - 聚合:具有空值的种子
- pandas - 每个列数据框的分布概率,在一个图中
- php - 如何解决此错误“无法将 JSONArray 转换为 JSONObject”
- c - 为什么 GLibC 中有“不间断空间”和其他 ispunct()?
- java - 如何在 java 和 Bouncy Castle 中生成 PGP 密钥撤销
- batch-file - 如何检查文件扩展名?
- swift - 用于 swift 的 plist 文件中的字符串插值变量
- r - 通过 geom_path() 删除从第一个数据到最后一个数据链接的行
- jquery - 为使用 jquery 过滤的表创建图像