读取对象的特定值

时间:2019-05-28 17:13:59

标签: javascript json

我正在使用返回此对象的api:

   { 
        "0155894402285712": { "type": "GBUserFieldText", "value": "A0242", "name": "Codice+tessera" }, 
        "0155894402283800": { "type": "GBUserFieldText", "value": "LZZMRN55L53C003Z", "name": "Codice+Fiscale" } 
    }

我需要提取值A0242和LZZMRN55L53C003Z,但我所知道的唯一名称是“ Codice + tessera”和“ Codice + fiscale”。如何读取这些值?也许我的问题很愚蠢,但实际上我今天已经失去了头脑...

谢谢

4 个答案:

答案 0 :(得分:1)

您可以使用Object.values,然后访问value键的值

let obj =  { 
        "0155894402285712": { "type": "GBUserFieldText", "value": "A0242", "name": "Codice+tessera" }, 
        "0155894402283800": { "type": "GBUserFieldText", "value": "LZZMRN55L53C003Z", "name": "Codice+Fiscale" } 
}
    
Object.values(obj).forEach(({value})=>{
  console.log(value)
})

答案 1 :(得分:1)

您可以使用Object.values将对象转换为数组。使用map循环获取value

var obj = {"0155894402285712":{"type":"GBUserFieldText","value":"A0242","name":"Codice+tessera"},"0155894402283800":{"type":"GBUserFieldText","value":"LZZMRN55L53C003Z","name":"Codice+Fiscale"}}

var resut = Object.values(obj).map(o => o.value);
console.log(resut);

如果要匹配名称和值,可以使用reduce

var obj = {"0155894402285712":{"type":"GBUserFieldText","value":"A0242","name":"Codice+tessera"},"0155894402283800":{"type":"GBUserFieldText","value":"LZZMRN55L53C003Z","name":"Codice+Fiscale"}}

var resut = Object.values(obj).reduce((c, v) => Object.assign(c, {[v.name]: v.value}), {});
console.log(resut);

答案 2 :(得分:1)

您可以尝试以下方法:

const data = {
  "0155894402285712": {
    "type": "GBUserFieldText",
    "value": "A0242",
    "name": "Codice+tessera"
  },
  "0155894402283800": {
    "type": "GBUserFieldText",
    "value": "LZZMRN55L53C003Z",
    "name": "Codice+Fiscale"
  }
};

// get an array of all the values of this data.
const arrayOfValues = Object.values(data);
// filter this array in order to find the one which the name you want
const selectedObj = arrayOfValues.find(obj => obj.name === 'Codice+tessera');
// get the value of this object.
const selectedValue = selectedObj.value;
console.log(selectedValue);

// You can also make a function findValueOf(name):
const findValueOf = name =>
    arrayOfValues.find(obj => obj.name === name) &&
    arrayOfValues.find(obj => obj.name === name).value;

// and use it for example:
console.log(findValueOf('Codice+tessera')); // "A0242"
console.log(findValueOf('Codice+Fiscale')); // "LZZMRN55L53C003Z"

答案 3 :(得分:0)

如果您要从值“ Codice + tessera”中找到A0242,则需要与其他答案不同的东西:

var data = { 
        "0155894402285712": { "type": "GBUserFieldText", "value": "A0242", "name": "Codice+tessera" }, 
        "0155894402283800": { "type": "GBUserFieldText", "value": "LZZMRN55L53C003Z", "name": "Codice+Fiscale" } 
    }

const values = ["Codice+tessera", "Codice+fiscale"]
const results = values.map(v => Object.values(data).find(datum => datum.name === v)).map(v => v.value)
console.log(results) // [ "A0242", "LZZMRN55L53C003Z" ]