Javascript 如何使用jQuery在JSON数组中循环

Javascript 如何使用jQuery在JSON数组中循环,javascript,jquery,arrays,json,Javascript,Jquery,Arrays,Json,我正在尝试循环一个JSON数组 下面是示例输出 { "calls": [ [ { "interactionId": "2002766591", "account_id": "", "mid": "", "Eic_CallDirection": "O", "Eic_RemoteAddress"

我正在尝试循环一个JSON数组

下面是示例输出

{
    "calls": [
        [
            {
                "interactionId": "2002766591",
                "account_id": "",
                "mid": "",
                "Eic_CallDirection": "O",
                "Eic_RemoteAddress": "5462223378",
                "Eic_LocalAddress": "1062",
                "Eic_State": "I"
            }
        ]
    ],
    "status": [
        {
            "statusId": "Available",
            "userId": "su",
            "loggedIn": false
        }
    ]
}
这是我的jQuery代码

<script>
$(function(){

    function isset(a, b){

        if(typeof a !== "undefined" && a){
            return a
        }

        return b;
    }

    setInterval(function() {

        $.getJSON("showMEssages.php", {method: "getMessages"}, function(data){

            if(data.calls.length == 0 || !data.calls){
                console.log('No Messages');
            }
            var c;

            $.each(data.calls, function(i, item){

                c = item[i];
                console.log(c);

                var interactionId = isset(c.interactionId, 0);
                var Eic_CallDirection = isset(c.Eic_CallDirection, '');
                var Eic_State = isset(c.Eic_State, '');
                var AccoRDI_mid = isset(c.AccoRDI_mid, '');
                var Eic_RemoteAddress = isset(c.Eic_RemoteAddress, '');

                if( Eic_CallDirection == 'I' && Eic_State == 'A'){
                    console.log('Call From ' + Eic_RemoteAddress + ' MID: ' + AccoRDI_mid );
                }

                if(Eic_CallDirection == 'O' && Eic_State == 'C'){
                    console.log('Live Call With ' + Eic_RemoteAddress );
                }


            });
        });

    }, 1000);
});
</script>
错误指向这条线

console.log(c);
此问题的原因是什么?我如何纠正它?

在此函数中:

$.each(data.calls, function(i, item){});

数据中每个元素的值。调用
,因此不需要使用
项[i]
。只要
c=item
就足够了。

我解决了这个问题。我必须在一个循环中使用,因为我在数组中使用了数组

        $.each(data.calls, function(i, item){

            $.each(item, function(z, c){

                var interactionId = isset(c.interactionId, 0);
                var Eic_CallDirection = isset(c.Eic_CallDirection, '');
                var Eic_State = isset(c.Eic_State, '');
                var AccoRDI_mid = isset(c.AccoRDI_mid, '');
                var Eic_RemoteAddress = isset(c.Eic_RemoteAddress, '');

                if( Eic_CallDirection == 'I' && Eic_State == 'A'){
                    console.log('Call From ' + Eic_RemoteAddress + ' MID: ' + AccoRDI_mid );
                }

                if(Eic_CallDirection == 'O' && Eic_State == 'C'){
                    console.log('Live Call With ' + Eic_RemoteAddress );
                }

            });
        });

在他的json中,calls是一个数组数组,获取第i个元素是有意义的
i
data中
item
的索引
        $.each(data.calls, function(i, item){

            $.each(item, function(z, c){

                var interactionId = isset(c.interactionId, 0);
                var Eic_CallDirection = isset(c.Eic_CallDirection, '');
                var Eic_State = isset(c.Eic_State, '');
                var AccoRDI_mid = isset(c.AccoRDI_mid, '');
                var Eic_RemoteAddress = isset(c.Eic_RemoteAddress, '');

                if( Eic_CallDirection == 'I' && Eic_State == 'A'){
                    console.log('Call From ' + Eic_RemoteAddress + ' MID: ' + AccoRDI_mid );
                }

                if(Eic_CallDirection == 'O' && Eic_State == 'C'){
                    console.log('Live Call With ' + Eic_RemoteAddress );
                }

            });
        });