Javascript 将对象转换为对象数组
我有一个JavaScript对象的格式Javascript 将对象转换为对象数组,javascript,jquery,Javascript,Jquery,我有一个JavaScript对象的格式 { "header": { "dataFields": ["number", "name", "quantity", "id", "from"] }, "data": [ "20|sam|12|2|2012-06-29T00:00Z|", "18|peter|231|12|", ] } 我正在尝试将其转换为以下格式: [{"number" : "20", "name":"sa
{
"header": {
"dataFields": ["number", "name", "quantity", "id", "from"]
},
"data": [
"20|sam|12|2|2012-06-29T00:00Z|",
"18|peter|231|12|",
]
}
我正在尝试将其转换为以下格式:
[{"number" : "20", "name":"sam", "quantity" : "12", "id":"2"},
{"number" : "18", "name":"peter", "quantity": "231", "id" 12"}]
我不想要输出数组中的“from”字段。实现它的最佳方法是什么
var l={};
for ( var key in responseData.positions[i]){
l.name=key;
for(var k=0; k<responseData.positions.length;k++){
for ( var key in responseData.positions[k]) {
l.value= responseData.positions[k][key] ;
}
}
mainArray.push(l);
var l={};
对于(响应数据位置中的var键[i]){
l、 名称=键;
对于(var k=0;kmainArray=[];
对于(i=0;i
mainArray=[];
对于(i=0;i
您可以使用数组映射方法迭代数据数组并将其转换
代码和现场演示:
var对象={
“标题”:{
“数据字段”:[“编号”、“名称”、“数量”、“id”、“rom”]
},
“数据”:[
“20 | sam | 12 | 2 | 2012-06-29T00:00Z”,
“18 |彼得| 231 | 12 |”
]
} ;
var result=object.data.map(函数(字符串){
var split=string.split(|),item={};
对于(var i=0;i,可以使用array map方法迭代数据数组并将其转换
代码和现场演示:
var对象={
“标题”:{
“数据字段”:[“编号”、“名称”、“数量”、“id”、“rom”]
},
“数据”:[
“20 | sam | 12 | 2 | 2012-06-29T00:00Z”,
“18 |彼得| 231 | 12 |”
]
} ;
var result=object.data.map(函数(字符串){
var split=string.split(|),item={};
对于(变量i=0;ivar obj={
“标题”:{
“数据字段”:[“编号”、“名称”、“数量”、“id”、“发件人”]
},
“数据”:[
“20 | sam | 12 | 2 | 2012-06-29T00:00Z”,
“18 |彼得| 231 | 12 |”
]
};
var结果=[];
对于(var i=0,headers=obj.header.dataFields,len=obj.data.length,hLen=headers.length;i
var obj={
“标题”:{
“数据字段”:[“编号”、“名称”、“数量”、“id”、“发件人”]
},
“数据”:[
“20 | sam | 12 | 2 | 2012-06-29T00:00Z”,
“18 |彼得| 231 | 12 |”
]
};
var结果=[];
对于(var i=0,headers=obj.header.dataFields,len=obj.data.length,hLen=headers.length;i
如果要使用jQuery,可以执行以下操作
jsonData = {
"header": {
"dataFields": ["number", "name", "quantity", "id", "from"]
},
"data": [
"20|sam|12|2|2012-06-29T00:00Z|",
"18|peter|231|12|",
]
};
tmpData = {}
newData = []
$.each(jsonData['data'], function () {
data = this;
$.each(jsonData['header']['dataFields'], function (index, header) {
if (header !== "from") {
tmpData[header] = data.split('|')[index]
}
});
newData.push(tmpData);
tmpData = {};
});
newData
将包含
[
{id: "2", name: "sam",number: "20",quantity: "12"},
{ id: "12", name: "peter", number: "18", quantity: "231" }
]
如果您想使用jQuery,可以检查fiddle,您可以执行以下操作
jsonData = {
"header": {
"dataFields": ["number", "name", "quantity", "id", "from"]
},
"data": [
"20|sam|12|2|2012-06-29T00:00Z|",
"18|peter|231|12|",
]
};
tmpData = {}
newData = []
$.each(jsonData['data'], function () {
data = this;
$.each(jsonData['header']['dataFields'], function (index, header) {
if (header !== "from") {
tmpData[header] = data.split('|')[index]
}
});
newData.push(tmpData);
tmpData = {};
});
newData
将包含
[
{id: "2", name: "sam",number: "20",quantity: "12"},
{ id: "12", name: "peter", number: "18", quantity: "231" }
]
你可以查看fiddle那么这是关于JSON还是JavaScript的?即使你将原始数据作为JSON,一旦你将其解析为本机数据类型,它就与JSON无关了。我实际上假设你有一个对象,并想将其转换为一个对象数组。@Barmar我在你的代码中添加了我尝试的内容esn与数据结构没有任何相似之处。我假设responseData
包含对象,但是位置是什么
?为什么不使用responseData.header
或responseData.data
?您在哪里设置I
?大括号不匹配,您有3个打开,只有2个关闭。responseData.pos输入数组是什么?这是关于JSON还是JavaScript的?即使您将原始数据作为JSON获取,一旦您将其解析为本机数据类型,它也与JSON无关。实际上,我假设您有一个对象,并希望将其转换为一个对象数组。@Barmar我在问题中添加了我尝试过的内容您的代码没有我假设responseData
包含对象,但是位置是什么
?为什么不使用responseData.header
或responseData.data
?您在哪里设置I
?大括号不匹配,您有3个打开位置,只有2个关闭位置输入数组我在回答中提到的映射方法也存在于jQuery($.map)中对不起,我并没有试图破坏你的答案。我不久前写了这个答案,但忘了发布它。不用担心:-)我只是在评论你的代码并指向一个较短的方法。我在回答中提到的映射方法也存在于jQuery($.map)中对不起,我并没有试图破坏你的答案。我不久前写了这个答案,但忘了发布它。不用担心:-)我只是在评论你的代码并指向一个较短的方法。
[
{id: "2", name: "sam",number: "20",quantity: "12"},
{ id: "12", name: "peter", number: "18", quantity: "231" }
]