JavaScript数组元素怪异
这是我的第一个问题 我有一个返回JSON字符串的AJAX,在function.done之后,我将经历: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时,结果非常正常,类似于[“缓冲区
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
附加到它的值oarData.push(temp);
不工作。我删除了temp,改为arData.push([value[0],value[1]]);,但生成的数组仍然是一样的。我不认为您理解代码在做什么,每次调用回调时,您都会将一个具有2个值的数组推到一个数组上。混淆是什么?这是代码应该做的。是的,我相信这就是我的目标。我对arData的预期结果类似于[[value1,value2],[value1,value2]等等,谢谢,@Monty。是的,需要有两个循环。