Всего во вложенном массиве в vue js

#javascript #arrays #vue.js

#javascript #массивы #vue.js

Вопрос:

Это результат моего запроса, который я хочу получить в сумме deduction

 3: {total_ot: 0, total_days: 96, total_allowance: 0, wrk_id: 3, f_name: "JOHN", l_name: "DOE",…}
daily_rate: 560
date: {2020-09-24: {work_hours: 8, adj_hour: 0}, 2020-09-25: {work_hours: 8, adj_hour: 0},…}
deduction: {1: {amount: 700}, 2: {amount: 700}}
f_name: "JOHN"
l_name: "DOE"
m_name: null
total_allowance: 0
total_days: 96
total_ot: 0
wrk_id: 3
  

В моем вычисленном

    deducted(){
  const deducted  = Object.values(this.workersSummaryData)
  return  deducted.reduce((acc, item) =>{      
  console.log(item.deducted)    
  if(item.deduction)
  return acc   item.deduction;
  else return acc

      }, 0)
   }

 },
  

Комментарии:

1. result of my query — не могли бы вы опубликовать это в форме, которая выглядит так, как будто она находится в переменной javascript? на данный момент это просто выглядит как нечто, чего не было бы в javascript

2. Основываясь на объекте дедукции, я думаю, вы захотите return acc item.deduction.amount

3. @Jekrb — больше похоже return acc Object.values(item.deduction).map(({amount}) => amount).reduce((a, b) => a b) на — since deduction — это объект со свойствами, которые являются объектами со свойством, называемым amount : p

4. Не беспокоясь, это дает результат 3200 , а не 1400

5. @Jekrb да, вы можете привести пример?

Ответ №1:

Попробуйте использовать метод reduce() и получить amount свойство для его суммирования:

 const sum = Object.values(obj.deduction)
    .reduce((a, {amount}) => {return a   amount }, 0);
  

Пример:

 let obj = {
    total_ot: 0, total_days: 96, total_allowance: 0, wrk_id: 3, f_name: "JOHN", l_name: "DOE",
    daily_rate: 560,
    date: { '2020-09-24': { work_hours: 8, adj_hour: 0 }, '2020-09-25': { work_hours: 8, adj_hour: 0 } },
    deduction: { 1: { amount: 700 }, 2: { amount: 700 } },
    f_name: "JOHN",
    l_name: "DOE",
    m_name: null,
    total_allowance: 0,
    total_days: 96,
    total_ot: 0,
    wrk_id: 3
};

const sum = Object.values(obj.deduction)
    .reduce((a, { amount }) => { return a   amount }, 0);
console.log(sum);  

Комментарии:

1. Я думаю, это не работает для меня, потому что я получаю такие данные Object.values(this.workersSummaryData.deduction) , которые я использую this

2. Если бы вы могли указать в вопросе ДОПУСТИМЫЕ данные формата, то, возможно, вам можно было бы помочь, поскольку данные в вопросе недействительны javascript, поэтому никто не может их расшифровать, кроме вас @NotaPro

3. @NotaPro — нет .. ДАННЫЕ … допустимые ДАННЫЕ javascript

4. @NotaPro попробуйте написать console.log(workersSummaryData.deduction) раньше Object.values и посмотреть, какие значения отображаются

5. @StepUp значение равно UNDEFINED