如何添加名称并将数组值转换为JSON?

时间:2016-03-17 22:56:13

标签: javascript arrays json

我有一个数组,如下:

["1", "hello1@example.com", "user111", "something1"],
["2", "hello2@example.com", "user222", "something2"],
["3", "hello3@example.com", "user333", "something3"],
...
["N", "helloN@example.com", "userNNN", "somethingN"]

如何将其转换为JSON:

{ 
  "order" : "1" 
, "email": "hello1@example.com" 
, "username": "user111" 
, "note": "something1" 
},
{ 
  "order" : "2"
, "email": "hello2@example.com"
, "username": "user222" 
, "note": "something2"
},
{ 
  "order" : "3" 
, "email": "hello3@example.com" 
, "username": "user333" 
, "note": "something3" 
}, 

... 

{ 
  "order" : "N" 
, "email": "helloN@example.com" 
, "username": "userNNN" 
, "note": "somethingN" 
}

我是自学JavaScript,所以如果您可以建议类似的案例或文档来了解更多信息,我将不胜感激。

谢谢。

3 个答案:

答案 0 :(得分:1)

你可以通过多种方式实现这一目标,例如:使用经典的for循环。

我目前支持的方式是使用Array.map:

array = [
    ["1", "hello1@example.com", "user111", "something1"],
    ["2", "hello2@example.com", "user222", "something2"],
    ["3", "hello3@example.com", "user333", "something3"],
    ...
    ["N", "helloN@example.com", "userNNN", "somethingN"]
];

var arr2 = array.map(function(el, i) {
    return {
        order: el[0],
        email: el[1],
        username: el[2],
        note: el[3]
    };
});

请参阅here以获取参考。那里有很多好吃的东西。

答案 1 :(得分:0)

这样的事情:

var arrayOfObjs = [];
for(var i in inputArray) {
    var data = inputArray[i];
    var obj = {
        order: data[0],
        email: data[1],
        username: data[2],
        note: data[3]
    };
    arrayOfObjs.push(obj);
}

console.log(arrayOfObjs);

首先循环遍历数组,因为你知道内部数组总是长度为4,[0 = order,1 = email,2 = username,3 = note],你可以安全地创建新对象并添加它们到一个新的阵列。您也可以在数组中执行此操作,这意味着您的输入数组将使用新格式更新(您基本上不创建新数组):

inputArray[i] = obj; // replace line `arrayOfObjs.push(obj)` with this one

答案 2 :(得分:0)

在纯javaScript中,我会选择Chiesa的解决方案。如果您想使用libraray,可以使用underscore.js来实现它:

var new_array = _.map(array, function(entry) {
   return _.object(['order', 'email', 'username', 'note'], entry);
});

var json = JSON.stringify(new_array);