Получить значение вложенного элемента с помощью lodash - PullRequest
0 голосов
/ 03 апреля 2019


Я пытаюсь использовать lodash для извлечения значения из вложенного элемента массива в массиве JSON.
Я хочу получить запланированное значение из определенного бюджета.
То есть Информирование TI00104 должно дать мне $ 130,00

Я пытался _.filter(my_json, {budgetList: {budget: 'TI00104'}}); но возвращение было пустым массивом.

var my_json = {  
    "department":"TI",
    "fiscal_year":"2019",
    "expense":"Vehicle Rent",
    "expense_description":"Credit Card payment",
    "user_cc":"2150",
    "accounting_account":"34101022",
    "budgetList":[  
        {  
            "budget":"TI00104",
            "planned":"$ 130,00"
        },
        {  
            "budget":"TI00105",
            "planned":"$ 140,00"
        }]
   };

Не могли бы вы, ребята, помочь? Заранее спасибо

Ответы [ 3 ]

0 голосов
/ 03 апреля 2019

Используйте _.find() вместо _.filter(), а это my_json.budgetList и используйте плоский объект в качестве предиката. Используйте _.get(), чтобы получить значение planned.

var my_json = {"department":"TI","fiscal_year":"2019","expense":"Vehicle Rent","expense_description":"Credit Card payment","user_cc":"2150","accounting_account":"34101022","budgetList":[{"budget":"TI00104","planned":"$ 130,00"},{"budget":"TI00105","planned":"$ 140,00"}]};

var result = _.get(
  _.find(my_json.budgetList, {budget: 'TI00104'})
, 'planned');

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>
0 голосов
/ 03 апреля 2019

Вы можете пропустить lodash и использовать встроенный Array.prototype.filter().

let myJson = {
  "department":"TI",
  "fiscal_year":"2019",
  "expense":"Vehicle Rent",
  "expense_description":"Credit Card payment",
  "user_cc":"2150",
  "accounting_account":"34101022",
  "budgetList":[  
    {  
      "budget":"TI00104",
      "planned":"$ 130,00"
    },
    {  
      "budget":"TI00105",
      "planned":"$ 140,00"
    }]
};
 
function getBudget(budgetName) {
  return myJson.budgetList.filter((b) => b.budget === budgetName)[0].planned;
}


console.log(`Budget: ${getBudget('TI00104')}`);
0 голосов
/ 03 апреля 2019

Вы можете использовать найти

var my_json = {"department":"TI","fiscal_year":"2019","expense":"Vehicle Rent","expense_description":"Credit Card payment","user_cc":"2150","accounting_account":"34101022","budgetList":[{"budget":"TI00104","planned":"$ 130,00"},{"budget":"TI00105","planned":"$ 140,00"}]};
   
let op = my_json.budgetList.find(({budget}) => budget ==="TI00104")

if(op){
  console.log(op.planned)
}
...