Laravel vue Данные массива SUM внутри массива - PullRequest
0 голосов
/ 15 апреля 2020

У меня есть массив данных, в котором есть массив, во втором массиве мне нужно сложить один столбец и получить результат обратно.

Снимок экрана

one

Код

controller

public function index()
{
  $zones = ZoneRegion::orderby('id', 'desc')->with(['areas', 'segments', 'links', 'cabels'])->get();
  return response()->json([
    'data' => $zones,
    'message' => 'Zona Wilayah berhasil diambil.'
  ]);
}

component

data() {
    return {
        regions: [],
    }
},
methods: {
    fetchRegions() {
        axios
        .get('/api/admin/zones', {
            headers: {
                Authorization: 'Bearer ' + localStorage.getItem('access_token')
            }
        })
        .then(response => {
            this.regions = response.data.data;
        })
        .catch(function (error) {
            console.log('error', error);
        });
    },
}

Любое предложение?

1 Ответ

1 голос
/ 15 апреля 2020

Вы можете использовать js метод уменьшения для суммирования всех длин кабелей вместе.

data() {
    return {
        regions: []
    }
},
methods: {
    fetchRegions() {
        axios
        .get('/api/admin/zones', {
            headers: {
                Authorization: 'Bearer ' + localStorage.getItem('access_token')
            }
        })
        .then(response => {
            this.regions = response.data.data.map(region => ({
                ...region,
                totalCableLength: region.links.reduce((total, link) => {
                    return total + parseInt(link.cable_length);
                }, 0)
            }));
        })
        .catch(function (error) {
            console.log('error', error);
        });
    }
}

Это сохранит ваши регионы так же, как вы извлекли их с сервера, но это добавит сумму всех длин кабеля связи к каждой области, это будет обозначено 'totalCableLength'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...