JavaScript数组元素怪异

JavaScript数组元素怪异,javascript,jquery,arrays,Javascript,Jquery,Arrays,这是我的第一个问题 我有一个返回JSON字符串的AJAX,在function.done之后,我将经历: var arData = []; $.each(response, function(key, value) { var temp = [value[0], value[1]]; arData.push(temp); //console.log(temp); }); console.log(arData); 当我打印var temp时,结果非常正常,类似于[“缓冲区

这是我的第一个问题

我有一个返回JSON字符串的AJAX,在function.done之后,我将经历:

var arData = [];
$.each(response, function(key, value) {
     var temp = [value[0], value[1]];
    arData.push(temp);
    //console.log(temp);
});
console.log(arData);
当我打印var temp时,结果非常正常,类似于[“缓冲区STOK”,497206627]。 但是,当我打印出arData变量时,生成的控制台日志如下所示:

为什么一系列二维数组的长度显示为4,元素为0、1和3

编辑:这是响应对象的日志:

*****更新*****

我想重新回答我的问题。 我正在使用ajax成对地获取json数据:[[“数据1”,int值1],“数据2”,int值2],…]。 根据这些数据,我打算使用arData.push([“data 1”,int-value 1]);,创建一个具有相同值的javascript数组;,对于每对json数据

这是我的原始代码:

        var arData = [];
        $.ajax({
          cache: false,
          type: 'get',
          url: 'dtsearch4.php',
          data: {type : 2},
          dataType: 'json',
          async: false
        })
        .done(function(response){ 
          $.each(response, function(key, value) {
             $.each(v,function(key, value){
                  //var temp = [value[0], value[1]];
                  arData.push([value[0], value[1]]);
              });
          });
但是,生成的数组如下所示:

v[Array[2],Array[2],[Array[2],…]
v0:阵列[4]
0:“APBD-I”
1: 302462864
3:NaN
长度:4
__原型:数组[0]
v1:数组[4]
v2:数组[4]

=>数组[4]和元素编号0、1和3有什么关系?没有编号2

而我想要的是一个包含2个元素的数组:

v[Array[2],Array[2],[Array[2],…]
v0:阵列[2]
0:“APBD-I”
1: 302462864
长度:2
__原型:数组[0]
v1:数组[2]

v2:Array[2]

在这段代码中,jQuery将为
响应
对象中的每个元素调用回调函数。
temp
的生存期只存在到该函数结束。因此,在
控制台.log(temp)
调用中只看到长度为2的数组,因为它没有以前的值

$.each(response, function(key, value) {
    var temp = [value[0], value[1]];
    arData.push(temp);
    //console.log(temp);
});

正常情况下,工作正常

 <html>
    <head>
    <script>
    function callthis(){
    var arData = [];
    {
        var value=[];
         value[0]="vasim";
         value[1]="vanzara";
         var temp = [value[0], value[1]];
        arData.push(temp);
        //console.log(temp);
    }
    console.log(arData);
    }
    </script>
    </head>
    <body>
        <input type="button" onclick="callthis()" value="Click me">
    </body>
    </html>

函数callthis(){
var arData=[];
{
var值=[];
值[0]=“vasim”;
值[1]=“vanzara”;
var temp=[值[0],值[1]];
推力(温度);
//控制台日志(temp);
}
控制台日志(arData);
}
调用服务可以使用JavaScript而不是Jquery,
每个循环必须运行两次

$.each(v, function(v_key, v_value) {
     $.each(v_key,function(key, value){
          arData.push([value[0], value[1]]);
      });
});

1st loop will take the values like v0, v1, v2. 
second loop will take the values of v0 like 0,1,3,length,__proto__

你能为
响应发布示例值吗?
?我编辑了这个问题以包含响应。响应是什么。(不显示图像)数组,如果我将其打印为文本,结果是标准json数组:[[“APBD-I”,302462864],“APBD-II”,61636307.68],“BUFFER STOK”,…编辑您的问题,并提及您得到的完整响应以及您希望我遵循的输出。我知道temp生存期仅在范围内。但是,arData声明在范围外。temp内的数据不应该传输到arData吗?
arData
通过调用t获取
temp
附加到它的值o
arData.push(temp);
不工作。我删除了temp,改为arData.push([value[0],value[1]]);,但生成的数组仍然是一样的。我不认为您理解代码在做什么,每次调用回调时,您都会将一个具有2个值的数组推到一个数组上。混淆是什么?这是代码应该做的。是的,我相信这就是我的目标。我对arData的预期结果类似于[[value1,value2],[value1,value2]等等,谢谢,@Monty。是的,需要有两个循环。