如何在javascript的对象数组中使我的json对象的字段名称成为值?

时间:2015-11-11 16:29:09

标签: javascript json

这是我的目标:

{Mary : 'Engineer', Jane : 'Doctor'}

我想把它变成这种格式:

{[Name: 'Marry', Occupation: 'Engineer'], [Name: 'Jane', Occupation: 'Doctor']}

如何使用javascript进行操作?

7 个答案:

答案 0 :(得分:1)

只需遍历第一个对象并将元素放在您想要的位置。

var obj = {Mary : 'Engineer', Jane : 'Doctor'};
var people = [];

for(var name in obj){
    var occ = obj[name];

    people.push({Name: name, Occupation: occ});
}

您在问题中显示的示例对象使用无效语法。你想要的是对象的数组,这就是这段代码的作用。

答案 1 :(得分:1)

您希望遍历数据中的键并为每个键创建一个新对象,其名称和职业属性。类似的东西:

function makeNameOccupation(data) {
  return Object.keys(data).map(c => {
    return {name: c, occupation: data[c]};
  });
}

console.log(makeNameOccupation({Mary : 'Engineer', Jane : 'Doctor'}))

对于原始对象中的每个键(人名),您将其映射到具有nameoccupation属性的对象。由于您有名称(作为键),您可以轻松地从原始对象中获取占用,并构建新记录。

如果你是这样的话,那可以缩小为:

return Object.keys(data).map(c => ({name: c, occupation: data[c]}));

答案 2 :(得分:1)

var result = [];
var i = "";
for (i in yourJSON) {
    // i is the key
    result.push({Name: i, Occupation: yourJSON[i]});
}

来自How to access key itself using javascript

问候

答案 3 :(得分:1)

尝试使用Object.keys()Array.prototype.map()

var data = {
  "Mary": 'Engineer',
  "Jane": 'Doctor'
}

var res = Object.keys(data).map(function(name) {
  return {
    "Name": name,
    "Occupation": data[name]
  }
});

console.log(JSON.stringify(res, null, 2))

答案 4 :(得分:0)

您想要的是无效的,您需要对象的数组

[{Name: 'Marry', Occupation: 'Engineer'}, {Name: 'Jane', Occupation: 'Doctor'}]

你可以这样做:

var people = []
var person = {Name: 'Jane', Occupation: 'Doctor'};
people.push(person);

答案 5 :(得分:0)

所以你有一个看起来像这样的对象

var originalPeopleObj = {Mary : 'Engineer', Jane : 'Doctor'}

您想要做的是获取对象中人名的列表。

var names = Object.keys(originalPeopleObj);

这将创建一组人名

names = ["Mary", "Jane"];

现在,您必须将这些名称映射到originalPeopleObj

内的职业
var newPeople = [];
for(var i = 0; i < names.length ; i++) {
     var peopleObj = {};
     peopleObj[i].name = names[i];
     peopleObj[i].occupation = originalPeopleObj[names[i]];
}

答案 6 :(得分:0)

您可以遍历对象的键并构建一个新的对象数组。

&#13;
&#13;
var object = { Mary: 'Engineer', Jane: 'Doctor' },
    result = Object.keys(object).map(function (key) {
        return { Name: key, Occupation: object[key] };
    });
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');
&#13;
&#13;
&#13;