Чтение определенного значения объекта

Я использую API, который возвращает этот объект:

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

Мне нужно извлечь значение A0242 и LZZMRN55L53C003Z, но единственное, что я знаю, это имя «Codice+tessera» и «Codice+fiscale». Как я могу прочитать эти значения? Может мой вопрос глупый, но правда я сегодня схожу с ума...

Спасибо

Неясно. Хотите получить value на основе name?

adiga 28.05.2019 19:17

да адига, извините если не понятно

Christian Cascone 28.05.2019 19:27
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
3
2
53
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Вы можете использовать Объект.значения, а затем получить доступ к значению ключа 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.info(value)
})

Вы можете использовать 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.info(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.info(resut);

Если вы хотите найти A0242 из имеющегося у вас значения «Codice + tessera», вам нужно что-то отличное от других ответов:

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.info(results) // [ "A0242", "LZZMRN55L53C003Z" ]
Ответ принят как подходящий

Вы можете попробовать это:

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.info(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.info(findValueOf('Codice+tessera')); // "A0242"
console.info(findValueOf('Codice+Fiscale')); // "LZZMRN55L53C003Z"

использование find дважды не является хорошей практикой, вы можете лучше сохранить результат как некоторую переменную, а затем получить доступ к свойству value или вы можете использовать значение по умолчанию ( arrayOfValues.find(obj => obj.name === name) || {} ).value

Code Maniac 28.05.2019 20:02

Другие вопросы по теме