Nano Hash - криптовалюты, майнинг, программирование

Как я могу получить какое-то значение от глубоко вложенного объекта?

Есть два типа массивов, которые мне нужно создавать динамически.

data['fields']['title']

а также

data['fields']['description']['html']

он возвращает содержимое этой структуры:

{   
    "fields": {
        "title": "Headline",
        "description": {
            "html": "<p>description text</p>"
        }   
    },   
    "meta": {
        "id": "995915463198380032"   
    } 
}

Проблема «динамически».

Я вызываю функцию и указываю путь через нее как "description>html". Я разделил строку на «описание» и «html». Но как мне теперь построить массив: data['fields']['description']['html']

Иногда бывает уровень, более или менее похожий на «титул». Если я хочу вызвать заголовок, массив будет похож на data['fields']['title']

Таким образом, содержимое и количество частей в массиве являются динамическими.

Я пробовал сам это:

function comfort_x(item_fields) {


var splitter = item_fields.split(">");
var content = new Array();

for (var i = 1; i < splitter.length; ++i) {
    content['splitter['+i+']'] = splitter[i];
}

data['fields'][splitter[0]][splitter[1]];

}

Спасибо за помощь.

16.10.2018

  • Можете ли вы добавить несколько образцов строк, которые вы, возможно, захотите попробовать 16.10.2018
  • взгляните на структуру контента. это строки, которые я хочу вернуть. 16.10.2018
  • Итак, этот вопрос скорее об объекте, чем о массиве. Могу я предложить заголовок «Как я могу получить некоторую ценность от глубоко вложенного объекта?» 16.10.2018

Ответы:


1

Вы можете создать функцию, которая будет смотреть на уровень, который вы проходите. Вы можете просто split свой путь на > и уменьшить этот массив с помощью исходного ввода.

(data, path) => path.split(">").reduce((r, e) => r[e], data);

Вот пример.

var obj = {   
    "fields": {
        "title": "Headline",
        "description": {
            "html": "<p>description text</p>"
        }   
    },   
    "meta": {
        "id": "995915463198380032"   
    } 
}

var lookUp = (o, path) => path.split(">").reduce((r, e) => r[e], o);

console.log('fields: ', lookUp(obj, 'fields'))
console.log('fields>title: ', lookUp(obj, 'fields>title'))
console.log('fields>description>html: ', lookUp(obj, 'fields>description>html'))

16.10.2018
  • Имеет смысл читать глубоко вложенный ключ в объекте. ???? 16.10.2018
  • Вот и все! Спасибо! 21.10.2018

  • 2

    Он работает с этим дополнительным обходным решением:

            switch (splitter.length) {
            case 0:
                item.innerHTML = data['fields'];
            break;
            case 1:
               item.innerHTML = data['fields'][splitter[0]];
            break;
            case 2:
                item.innerHTML = data['fields'][splitter[0]][splitter[1]];
            break;
            case 3:
                item.innerHTML = data['fields'][splitter[0]][splitter[1]][splitter[2]];
    
        }
    

    возможно, у вас есть более разумное решение.

    16.10.2018

    3
  • Предназначен для построения объекта по известным вложенным путям. 16.10.2018
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..