Я получил json от API и this.state.data
его в this.state.data
например:
[
{
"name": "Primary Category",
"value": [
{
"value": "Fracture",
"Diagnosis_Code": ["DIAG003"],
"name": "Primary Category",
"FK_Diagnosis_Content_ID": 3,
"FK_Diagnosis_Category_ID": 1
},
{
"value": "Osteoarthritis",
"Diagnosis_Code": ["DIAG001"],
"name": "Primary Category",
"FK_Diagnosis_Content_ID": 1,
"FK_Diagnosis_Category_ID": 1
},
{
"value": "Osteonecrosis",
"Diagnosis_Code": ["DIAG002", "DIAG004"],
"name": "Primary Category",
"FK_Diagnosis_Content_ID": 2,
"FK_Diagnosis_Category_ID": 1
},
]
},
{
"name": "Anatomy",
"value": [
{
"value": "Hip",
"Diagnosis_Code": ["DIAG001"],
"name": "Anatomy",
"FK_Diagnosis_Content_ID": 4,
"FK_Diagnosis_Category_ID": 2
},
{
"value": "Pelvis",
"Diagnosis_Code": ["DIAG002", "DIAG003", "DIAG004"],
"name": "Anatomy",
"FK_Diagnosis_Content_ID": 6,
"FK_Diagnosis_Category_ID": 2
}
]
}
]
и у меня есть динамическое состояние, используя такую функцию:
onChangeTextPress(key, value){
this.state.selected[key] = value
//another code
}
пример this.state.selected
["Первичная категория": "Перелом", Анатомия: "Хип")
Я хочу получить FK_Diagnosis_Content_ID
json, в зависимости от которого this.state.selected[key] and it value
заполнено
поэтому в зависимости от selected
примера у меня будет результат: [3, 4]
потому что у json есть key
именем name
а value
- Primary Category
, а value
selected state
Primary Category
- это Fracture
поэтому у меня есть значение FK_Diagnosis_Content_ID
в json, аналогично Anatomy: 'Hip'
Я не знаю, знаете ли вы все, что я хочу, но не стесняйтесь спрашивать меня, нужна ли вам другая информация,
Надеюсь, кто-нибудь может мне помочь
Вы можете использовать Object.keys()
и Array.prototype.includes()
.
Пример 1
// Let assume you have the below structure
const data = { 'Primary Category': 'Fracture', Anatomy: 'Hip' }
Object.keys(data).forEach((key) => console.log(key))
// Output:
// Primary Category
// Anatomy
Чтобы получить желаемое значение, вы можете использовать что-то вроде ниже
Образец 2
// this.state.selected => { 'Primary Category': 'Fracture', Anatomy: 'Hip' }
const keys = Object.keys(this.state.selected);
const result = [];
this.state.data.forEach((d) => {
if(keys.includes(d.name)) {
d.value.forEach((v) => {
if(v.value === this.state.selected[d.name]) {
result.push(v['FK_Diagnosis_Content_ID']);
}
})
}
});
console.log(result);
// Output: [3,4]
Пример 3
// this.state.selected => [{ 'Primary Category': 'Fracture'}, {Anatomy: 'Hip' }]
// Since we know there is only one key in every object
const keys = this.state.selected.map((s) => Object.keys(s)[0])
const result = [];
this.state.data.forEach((d) => {
if(keys.includes(d.name)) {
d.value.forEach((v) => {
if(v.value === this.state.selected[keys.indexOf(d.name)][d.name]) {
result.push(v['FK_Diagnosis_Content_ID']);
}
})
}
});
console.log(result);
// Output: [3,4]
[{ 'Primary Category': 'Fracture'}, {Anatomy: 'Hip'}]
) вместо объекта? или sample 2
является примером массива?
Вы можете использовать это как
const key = Object.keys(this.state.selected);
const response = [];
this.state.data.forEach((d) => {
if(key.includes(d.tag)) {
d.value.forEach((v) => {
if(v.value === this.state.selected[d.name]) {
result.push(v['FK_Diagnosis_Content_ID']);
}
})
}
});
console.log(result);
this.state.select
объект или массив?this.state.selected
- это массив с[ ]
впервые