Javascript 将数组数组重新组织为哈希数组并转换为JSON

Javascript 将数组数组重新组织为哈希数组并转换为JSON,javascript,json,Javascript,Json,我有以下数组 var arr=[[10,20,30],[12,21,33],[13,23,35]]; 如何将该数组转换为JSON。 期望结果 myJSONarr=[ {“x”:10,“y”:20,“z”:30}, {“x”:12,“y”:21,“z”:33}, {“x”:13,“y”:23,“z”:35} ]; 我猜我必须定义sting数组 var objArray=["x","y","z"]; 并使用eval()函数循环这两个值。 非常感谢您的帮助。假设您只想将值映射到JavaScript

我有以下数组

var arr=[[10,20,30],[12,21,33],[13,23,35]];
如何将该数组转换为JSON。 期望结果

myJSONarr=[
{“x”:10,“y”:20,“z”:30},
{“x”:12,“y”:21,“z”:33},
{“x”:13,“y”:23,“z”:35}
];

我猜我必须定义sting数组

var objArray=["x","y","z"];
并使用
eval()
函数循环这两个值。
非常感谢您的帮助。

假设您只想将值映射到JavaScript对象†:


JSON!=JavaScript对象

假设您只想将值映射到JavaScript对象†:


JSON!=JavaScript对象

我的版本。编辑:我不知道twig objArray不是问题的一部分,而是OP的建议作为解决方案的一部分。哦,好吧,反正我喜欢

var arr=[[10,20,30],[12,21,33],[13,23,35]];    
var objArray=["x","y","z"];

var myJSONarr = [];

for (var idx = 0; idx != arr.length; idx++) {
    var row = {};
    for (var idx2 = 0; idx2 != objArray.length; idx2++) {
       row[objArray[idx2]] = arr[idx][idx2];
    }
    myJSONarr.push(row);
}

alert(JSON.stringify(myJSONarr));

我的版本。编辑:我不知道twig objArray不是问题的一部分,而是OP的建议作为解决方案的一部分。哦,好吧,反正我喜欢

var arr=[[10,20,30],[12,21,33],[13,23,35]];    
var objArray=["x","y","z"];

var myJSONarr = [];

for (var idx = 0; idx != arr.length; idx++) {
    var row = {};
    for (var idx2 = 0; idx2 != objArray.length; idx2++) {
       row[objArray[idx2]] = arr[idx][idx2];
    }
    myJSONarr.push(row);
}

alert(JSON.stringify(myJSONarr));
第一:

或者,使用高阶函数:

var labels = ["x", "y", "z"];
var arr = [[10,20,30], [12,21,33], [13,23,35]];
var arr2 = arr.map(function(a) {
    return a.reduce(function(prev, curr, i) {
        prev[labels[i]] = curr;
        return prev;
    }, {});
});
然后直接将新数组转换为JSON。

首先:

var arr = [[10,20,30], [12,21,33], [13,23,35]];

var arr2 = [];
for (var i in arr) {
    var a = arr[i];
    arr2.push({
        x: a[0],
        y: a[1],  
        z: a[2]
    });
}
或者,使用高阶函数:

var labels = ["x", "y", "z"];
var arr = [[10,20,30], [12,21,33], [13,23,35]];
var arr2 = arr.map(function(a) {
    return a.reduce(function(prev, curr, i) {
        prev[labels[i]] = curr;
        return prev;
    }, {});
});

然后直接将新数组转换为JSON。

许多不同的答案,下面是另一个:


var arr=[[10,20,30],[12,21,33],[13,23,35];
var stringify=[];
对于(变量i=0;i
许多不同的答案,下面是另一个:


var arr=[[10,20,30],[12,21,33],[13,23,35];
var stringify=[];
对于(变量i=0;i
您所描述的不仅仅是JSON转换。实际上,您有一个由三个元素组成的数字数组,您需要的是一个哈希数组的JSON,其中每个三元组成为“x”、“y”、“z”上的哈希

无论如何,如果您想要一个简单的.toJSON()函数,Prototype.js在大多数对象上都包含一个.toJSON()函数,这使它变得非常简单

未经测试的

var arr=[[10,20,30],[12,21,33],[13,23,35]];
var myarrOfXYZ = arr.collect(function(T){ return $H({ x: T[0], y: T[1], z: T[2] }) });
var myJSON = myarrOfXYZ.toJSON();

请注意,prototype还提供了一个函数“zip”,可以在第2行使用,而不是$H

您所描述的不仅仅是JSON转换。实际上,您有一个由三个元素组成的数字数组,您需要的是一个哈希数组的JSON,其中每个三元组成为“x”、“y”、“z”上的哈希

无论如何,如果您想要一个简单的.toJSON()函数,Prototype.js在大多数对象上都包含一个.toJSON()函数,这使它变得非常简单

未经测试的

var arr=[[10,20,30],[12,21,33],[13,23,35]];
var myarrOfXYZ = arr.collect(function(T){ return $H({ x: T[0], y: T[1], z: T[2] }) });
var myJSON = myarrOfXYZ.toJSON();

请注意,prototype还提供了一个函数“zip”,可用于第2行而不是$H

,只需在数组中循环,并从数组中的每个数组创建一个字符串,然后将字符串连接起来形成JSON字符串:

var items = [];
for (var i = 0; i < arr.length; i++) {
  items.push('{"x":'+arr[i][0]+',"y":'+arr[i][1]+',"z":'+arr[i][2]+'}');
}
var myJSONarr = '[' + items.join(',') + ']';
var项目=[];
对于(变量i=0;i
只需在数组中循环,并从数组中的每个数组创建一个字符串,然后将这些字符串连接起来形成JSON字符串:

var items = [];
for (var i = 0; i < arr.length; i++) {
  items.push('{"x":'+arr[i][0]+',"y":'+arr[i][1]+',"z":'+arr[i][2]+'}');
}
var myJSONarr = '[' + items.join(',') + ']';
var项目=[];
对于(变量i=0;i
如果使用jquery:

var arr=[[10,20,30],[12,21,33],[13,23,35]],
myjson = JSON.stringify($.map(arr,function(a){return {x:a[0],y:a[1],z:a[2]}}));

如果您使用原型:

var myjson  = JSON.stringify([[10,20,30],[12,21,33],[13,23,35]].map(function(a){
              return {x:a[0],y:a[1],z:a[2]}}));

如果使用jquery:

var arr=[[10,20,30],[12,21,33],[13,23,35]],
myjson = JSON.stringify($.map(arr,function(a){return {x:a[0],y:a[1],z:a[2]}}));

如果您使用原型:

var myjson  = JSON.stringify([[10,20,30],[12,21,33],[13,23,35]].map(function(a){
              return {x:a[0],y:a[1],z:a[2]}}));

@Felix Kling:为什么不呢?这是一种非常简单的格式。该代码适用于任何浏览器版本,而不仅仅是JSON引入后发布的版本。@Felix Kling:为什么不呢?这是一种非常简单的格式。代码适用于任何浏览器版本,而不仅仅是在引入JSON后发布的版本。感谢澄清。感谢澄清。谢谢。我还没有尝试过原型方法。我打算尝试这里提供的所有解决方案。我是JS的新手,谢谢。我还没有尝试过原型方法。我打算尝试这里提供的所有解决方案。我是JS新手。@user711522:仅在使用jQuery时使用它。@user711522:仅在使用jQuery时使用它。