Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/89.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将对象转换为对象数组_Javascript_Jquery - Fatal编程技术网

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

我有一个JavaScript对象的格式

{
    "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;k
mainArray=[];
对于(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;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
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" }
]