array javascript 循环错误

array javascript loop wrong

这是一个简单的问题,但我无法解决。总是当我托盘在我的数组 return 索引 0

中做 loopp
<script>
            let status = [];
            let number = [];
            let llamadas = [];
            
            llamadas = {!! json_encode($estados) !!}
            
            for(var i=0; i<llamadas.length; i++){
                console.log(llamadas[i][i]);

                status.push(llamadas[i][i].desc);
                number.push(llamadas[i][i].total)
            }

llamadas 这是我来自控制器的变量,我正在使用 laravel 5.6 后端如何

llamadas 包含这个:

(7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
0: {id_teleoperadora: 9, desc: "APLAZADA", total: 40}
1: {id_teleoperadora: 9, desc: "AUSENTE", total: 132}
2: {id_teleoperadora: 9, desc: "CONFIRMADA", total: 218}
3: {id_teleoperadora: 9, desc: "NUEVA", total: 101}
4: {id_teleoperadora: 9, desc: "NULA", total: 217}
5: {id_teleoperadora: 9, desc: "PENDIENTE", total: 45}
6: {id_teleoperadora: 9, desc: "VENTA", total: 1}
length: 7
__proto__: Array(0)

和他的原始内容内容

[Array(7)]
0: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
length: 1
__proto__: Array(0)

我从来没有用这种方式显示一个数组

在推送中,我需要提取 desc 以使用 chart.js 构建静态。现在我只能 return 一个状态。我不知道我做错了。当我有 status 我会继续 number 但现在我只能 return 一个结果 status "aplazada" 我不知道我是否做得好我的 pushs

感谢帮助

我的控制器出现错误,应该是:

public function getStateCallCommercial($operadora)
    {

        $callSend = array();

        array_push($callSend, \DB::select(
            \DB::raw("SELECT L.id_teleoperadora, CE.desc, COUNT(C.id) as total
                        FROM LLAMADA L 
                        JOIN CITA C ON L.ID = C.id_llamada 
                        JOIN CITA_ESTADO CE ON C.id_estado = CE.id 
                        WHERE L.id_teleoperadora  = $operadora
                        AND L.id_estado = 5
                        GROUP BY L.id_teleoperadora, CE.desc
                        ORDER BY CE.desc;" ) )
        );
        

        return view('admin.estadisticas.index')->with('estados', $callSend[0]);

这会将我的数据发送给您查看。在我的 blade:

<script>
            let status = [];
            let number = [];
            let llamadas = [];
            
            llamadas = {!! json_encode($estados) !!};
            
            for(var i=0; i<llamadas.length; i++){
                status.push(llamadas[i].desc);
                number.push(llamadas[i].total)
            }            
 
var ctx = document.getElementById('myChart').getContext('2d');
            var myChart = new Chart(ctx, {
                type: 'bar',
                data: {
                    labels: status,
                    datasets: [{
                        label: 'Estado de las llamadas pasadas a comerciales',
                        data: number,
                        backgroundColor: [
                            'rgba(255, 99, 132, 0.2)',
                            'rgba(54, 162, 235, 0.2)',
                            'rgba(255, 206, 86, 0.2)',
                            'rgba(75, 192, 192, 0.2)',
                            'rgba(153, 102, 255, 0.2)',
                            'rgba(255, 159, 64, 0.2)'
                        ],
                        borderColor: [
                            'rgba(255, 99, 132, 1)',
                            'rgba(54, 162, 235, 1)',
                            'rgba(255, 206, 86, 1)',
                            'rgba(75, 192, 192, 1)',
                            'rgba(153, 102, 255, 1)',
                            'rgba(255, 159, 64, 1)'
                        ],
                        borderWidth: 1
                    }]
                },
                options: {
                    scales: {
                        y: {
                            beginAtZero: true
                        }
                    }
                }
            });

用这个我构建了我的图形。

感谢大家的回复和帮助

var llamadas =[{id_teleoperadora: 9, desc: "APLAZADA", total: 40},
{id_teleoperadora: 9, desc: "AUSENTE", total: 132},
{id_teleoperadora: 9, desc: "CONFIRMADA", total: 218},
{id_teleoperadora: 9, desc: "NUEVA", total: 101},
{id_teleoperadora: 9, desc: "NULA", total: 217},
{id_teleoperadora: 9, desc: "PENDIENTE", total: 45},
{id_teleoperadora: 9, desc: "VENTA", total: 1}];

/**
if above is your structure you can do this.
*/
 let status = [];
 let number = [];
for(var i=0;i<llamadas.length;i++){
     status.push(llamadas[i].desc);
     number.push(llamadas[i].total);
}
console.log(status);
console.log(number);
console.log("---------seperation-------------------");
/**
if above is your structure like this
[Array(7)]
0: (7) [{…}, {…}, {…}, {…}, {…}, {…}, {…}]
length: 1
__proto__: Array(0)
you can see in array is containing array but always in 0th position.
you can do this.
*/
var d=[llamadas]//this will give you [Array(7)] structure.
var ll=d[0];//this will give you llamadas single dimesion array.
let status2 = [];
let number2 = [];
for(var i=0;i<ll.length;i++){
     status2.push(ll[i].desc);
     number2.push(ll[i].total)
}
console.log(status2);
console.log(number2);