是否有从json数组中获取对象中的值的方法。我需要从基于另一个值的对象中获取一个值。
我的代码如下:
class Object:
def __init__(self, mesh):
self.mesh = mesh
def __getattr__(self, name):
return getattr(self.mesh, name)
def __setattr__(self, name, value):
if name in self.__dict__ or name == 'mesh': # special case for 'mesh' here!
super().__setattr__(name, value)
else:
setattr(self.mesh, name, value)
我的“ responseJson”就是这样。然后提供键值(abc@gmail.com),如何获取字符串“ abcdef”?
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);
})
}
}
谢谢。
答案 0 :(得分:2)
找到与电子邮件匹配的元素并返回ID。
const data = [
{
"id": "qwerty",
"email": "cat@gmail.com",
"name": "cat"
},
{
"id": "abcdef",
"email": "abc@gmail.com",
"name": "abc"
},
{
"id": "owowao",
"email": "dog@gmail.com",
"name": "dog"
},
];
const findIdByEmail = (data, email) => {
const el = data.find(el => el.email === email); // Possibly returns `undefined`
return el && el.id; // so check result is truthy and extract `id`
}
console.log(findIdByEmail(data, 'cat@gmail.com'));
console.log(findIdByEmail(data, 'abc@gmail.com'));
console.log(findIdByEmail(data, 'gibberish'));
答案 1 :(得分:1)
代码将取决于您如何获得值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);
})
}
}