Как объединить вложенный массив в vuejs

#javascript #arrays #vue.js

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

Вопрос:

результат моего запроса

 absent: 0
attn: {21: {days: 5}, 22: {days: 5}, 23: {days: 3}}
daily_rate: 57.50798722044728
deduction: {4: {amount: 333.33}, 6: {amount: 222.2, },…}
4: {amount: 333.33,}
6: {amount: 222.2}
7: {amount: 2242}
8: {amount: 1127.5}
9: {amount: 1120}
  

В моем vue js у меня есть родительский массив и дочерний массив..Я понятия не имею, как объединить данные во вложенный массив

                      <tbody>
                    <tr v-for="(fetch, count) in payrollPayableArray">  -----> PARENT ARRAY
                     <td style="height:10px;">{{fetch.pay_class}}</td>
                     <td style="height:10px; color:red;">{{formatNum(fetch.absent * fetch.daily_rate)}}</td>
                     <td style="height:10px; color:red;">{{formatNum(fetch.late * fetch.rate_per_minute)}}</td>
                     <td style="height:10px; color:red;">{{formatNum(fetch.ut * fetch.rate_per_minute)}}</td>
                     <td style="height:10px;">{{formatNum(fetch.gross)}}</td>
                     

                    <template v-for="(disp, index) in fetch.deduction">   --> CHILD ARRAY
                     <td>{{disp.amount}} <button type="button" @click="removeDeduction(index)"class="btn btn-danger btn-sm">X</button> </td>
                     </template>
                   
                    </tr>
                  </tbody>
  

Эта функция не работает … Я надеюсь, что вы сможете мне помочь

    removeDeduction(index) {
          return this.payrollPayableArray.reduce((acc,item)=>{
           const arr =  Object.values(item.deduction).reduce((bcc,a,idx)=>{
            Object.values(idx).splice(index,1)
          
           })
        
           })

           
         },
  

моя проблема похожа на это https://jsfiddle.net/uLqfks3e/5 /

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

1. ваши методы сокращения не возвращают ваш накопитель acc

2. .splice изменяет массив на месте, но Object.values(..) создает новый массив, который выполняется первым. Это означает, что ваш код отбрасывает результат команды splice . Кроме того, idx это число; Object.values(3) ничего не производит.

3. вы хотите удалить определенный элемент во вложенном массиве. правильно?

4. Одна из проблем заключается в том, что вам нужно сначала count выбрать конкретный элемент массива payroll. Вот один из возможных способов сделать это: jsfiddle.net/3cgb7fpL

5. Хе-хе, да, это так 🙂 Вот reduce версия: jsfiddle.net/0Ldot75f (обратите внимание, что обратный вызов возвращает накопитель)