отобразить сложный javascript массив объектов для получения значений - PullRequest
0 голосов
/ 02 мая 2020

У меня есть большой документ, который показывает данные о питании фиктивного рецепта.

Посмотрите на коды и флажки json сначала

я хочу получить общее количество калорий и факты о питании этого объекта;

рецепт содержит массив вещей, а в массиве вещей у нас есть 2 предмета;

каждый предмет имеет факты (факты);

факты (витамины, питание, калории и др.)

каждый факт имеет значение;

Я перепробовал множество вложенных функций array.map высокого порядка, например, я получил калории для каждого элемента, но проблема заключалась в том, что Функция вложенной карты возвращает каждое значение калории ie в отдельном массиве ...

я хочу получить значения sh каждого элемента (вещи рецепта) в массивах, например:

const vitaminValues = []
const nutritionValues = []
const caloriesValues = []
const othersValues = []

если я получу это, я смогу получить общее количество калорий, витаминов, питания и другую информацию

но idk, если у вас, ребята, есть идеи получше, просто помогите мне :) спасибо

это JSON файл образца рецепта: https://codesandbox.io/s/relaxed-brown-zrxnr?fontsize=14&hidenavigation=1&theme=dark

1 Ответ

1 голос
/ 02 мая 2020
let data=//your json
let vitaminValues = [];
let nutritionValues = [];
let caloriesValues = [];
let othersValues = [];
let vitaminAValues = [];

function getValuesFromJson(obj, Arr) {
  Object.entries(obj).map(
    vitamin => vitamin[1].hasOwnProperty("value") && Arr.push(vitamin[1].value)
  );
}
data.map(d =>
  d.stuffs.map(stuff =>
    stuff.item.fact.map(f => {
      getValuesFromJson(f.vitamins, vitaminValues);
      getValuesFromJson(f.others, othersValues);
      caloriesValues.push(f.calories);
      f.nutritions.map(nutri => getValuesFromJson(nutri, nutritionValues));
      vitaminAValues.push(f.vitamins.A.value);
    })
  )
);
console.log("vitaminValues", vitaminValues);
console.log("nutritionValues", nutritionValues);
console.log("othersValues", othersValues);
console.log("caloriesValues", caloriesValues);
console.log("vitaminAValues", vitaminAValues);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...