【问题标题】:array javascript loop wrong数组javascript循环错误
【发布时间】:2021-09-14 08:42:35
【问题描述】:

这是一个简单的问题,但我无法解决。总是当我在我的数组中执行 loopp 时返回索引 0

<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 构建统计数据。现在我只能返回一个状态。我不知道我做错了。当我有status 我将继续使用number 但现在我只能返回一个结果status "aplazada" 我不知道我是否做得很好我的pushs

感谢帮助

【问题讨论】:

  • llamadas[i][i] 应该只是 llamadas[i]
  • 为什么是二维的?
  • @Barmar 如果我这样做,我将无法访问财产
  • llamadas[i].descllamadas[i].total 应该可以工作。
  • 它是一个一维的对象数组,你为什么认为你需要2个下标?

标签: javascript jquery arrays laravel-5


【解决方案1】:

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);

【讨论】:

    【解决方案2】:

    在我的控制器中我有错误,应该是:

    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]);
    

    这会将我的数据发送给查看。在我的刀片中:

    <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
                            }
                        }
                    }
                });
    

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

    感谢大家的回复和帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-19
      • 2012-07-09
      • 2018-04-21
      相关资源
      最近更新 更多