迭代JavaScript对象以生成对象数组

时间:2016-11-28 13:56:03

标签: javascript arrays object

我有一个对象数组。其中一个对象如下所示:

   obj1 = {
    name: 'rich', 
    email: 'rich@test.com', 
    date: {
        greg : {
            name: 'greg',
            id: 1234}
        }
}

如何迭代这个对象数组(称为usersArray)并将其添加到另一个对象数组(称为usersArrayObj),每个对象包含用户名(例如rich)和另一个对象的名称(例如greg) ) 所以我的最终结果如下所示:

obj1 = {
    name: 'rich', 
    pairName: 'greg', 
}

我曾尝试使用hasOwnProperty等等,但它们表现得有点时髦......

5 个答案:

答案 0 :(得分:0)

您可以像这样映射数组:

var myArray = [
  { name: 'rich', email: 'rich@test.com', date: { greg: { name: 'greg', id: 1234 } } },
  { name: 'foo', email: 'foo@test.com', date: { bar: { name: 'bar', id: 5678 } } }
];

var results = myArray.map(function(item) { // For each item in the array
  return {                                 // Return an object,
    name: item.name,                       // Using the current item's name
    pairName: Object.keys(item.date)[0]    // And the first key found on `item.date`
  };
});

console.log(results);

答案 1 :(得分:0)

您可以使用Array.prototype.map()来装箱新阵列

要选择对象data中的第一个键,您可以使用Object.keys()来返回给定对象自身可枚举属性的数组。然后,您可以选择第一个元素[0]



var usersArray = [{
  "name": 'rich',
  "email": 'rich@test.com',
  "date": {
    "greg": {
      "name": 'greg',
      "id": 1234
    }
  }
}, {
  "name": 'jason',
  "email": 'jason@test.com',
  "date": {
    "mickael": {
      "name": 'mickael',
      "id": 5678
    }
  }
}];

var usersArrayObj = usersArray.map(function(user) {
  return {
    "name": user.name,
    "pairName": Object.keys(user.date)[0]
  }
});

console.log(usersArrayObj);

.as-console-wrapper { max-height: 100% !important; top: 0; }




答案 2 :(得分:0)

此解决方案使用ES6。使用greg:并使用Object.values()(链接中的浏览器支持)提取对象(在const arr = [{ name: 'rich', email: 'rich@test.com', date: { greg: { name: 'greg', id: 1234 } } }]; const result = arr.map(({ name, date }) => ({ name, pairName: Object.values(date)[0].name })); console.log(result);内):



{{1}}




答案 3 :(得分:-1)

对于这种情况,您可以使用的是Object.keys() JS函数。

obj2= {
  name:obj1.name,
  pairName: Object.keys(obj1.date)[0]
}

答案 4 :(得分:-1)

var arr = [{
    name: 'rich', 
    email: 'rich@test.com', 
    date: {
        greg : {
            name: 'greg',
            id: 1234}
    }
}]

var newArr = [];
for (var i = 0; i < arr.length; i++) newArr[i] = {
    name: arr[i].name,
    pairName: Object.keys(arr[i].date)[0]
};
JSON.stringify(newArr);    // "[{"name":"rich","pairName":"greg"}]"