如何解决数组javascript循环错误
这是一个简单的问题,但我无法解决。总是当我在数组中做循环时返回索引 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
感谢帮助
解决方法
在我的控制器中有错误,应该是:
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,'rgba(255,206,86,'rgba(75,192,'rgba(153,102,255,159,64,0.2)'
],borderColor: [
'rgba(255,1)',1)'
],borderWidth: 1
}]
},options: {
scales: {
y: {
beginAtZero: true
}
}
}
});
我用这个构建我的图形。
感谢大家的回复和帮助
,var llamadas =[{id_teleoperadora: 9,desc: "APLAZADA",total: 40},{id_teleoperadora: 9,desc: "AUSENTE",total: 132},desc: "CONFIRMADA",total: 218},desc: "NUEVA",total: 101},desc: "NULA",total: 217},desc: "PENDIENTE",total: 45},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);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。