我有一个对象数组。其中一个对象如下所示:
obj1 = {
name: 'rich',
email: 'rich@test.com',
date: {
greg : {
name: 'greg',
id: 1234}
}
}
如何迭代这个对象数组(称为usersArray)并将其添加到另一个对象数组(称为usersArrayObj),每个对象包含用户名(例如rich)和另一个对象的名称(例如greg) ) 所以我的最终结果如下所示:
obj1 = {
name: 'rich',
pairName: 'greg',
}
我曾尝试使用hasOwnProperty等等,但它们表现得有点时髦......
答案 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"}]"