繁体   English   中英

将对象复制到具有特定条件的另一个对象

[英]Copying an object to another object with specific condition

默认对象是:

var employee = {
    'name': 'Hermione',
    'salary': 1000
};

我的问题是,如何使用这种格式将其复制到另一个对象?

var employee = {
    'Hermione': 1000
};

我试过了:

for (var prop in employee) {
    console.log(prop, employee[prop]); // 'name' 'Hermione'
    // what next?
}

更新:

var employees = [];
employees.push({ 'name': 'name1', 'salary': 1000 });
employees.push({ 'name': 'name2', 'salary': 2000 });
employees.push({ 'name': 'name3', 'salary': 3000 });

我要实现的目标:

var employees = [
    {'name1': 1000},
    {'name2': 2000},
    {'name3': 3000}
];

你有那些对象的数组吗? 对于单个对象,情况非常简单:

var employee2 = {};
employee2[employee['name']] = employee['salary'];

或对于现代浏览器:

var employee2 = {
    [employee['name']]: employee['salary']
};

更新

对于对象数组:

 var employees = [ { name: 'name1', salary: 1000 }, { name: 'name2', salary: 2000 }, { name: 'name3', salary: 3000 } ]; var employees2 = employees.map(employee => ({[employee.name]: employee.salary})); console.dir(employees2); 

对于较旧的浏览器:

var employees2 = employees.map(function(employee) {
     var result = {};
     result[employee['name']] = employee['salary'];
     return result;
});

您应该使用Array.prototype.filterArray.prototype.map

 var employees = []; employees.push({ 'name': 'n1', 'salary': 1000 }); employees.push({ 'name': 'n2', 'salary': 2000 }); employees.push({ 'name': 'n3', 'salary': 3000 }); var reduced = employees .reduce((res, val) => { res[val.name] = val.salary; return res; }, Object.create(null)) ; console.log('reduced', reduced); var mapped = employees .map(i => ({[i.name] : i.salary})) ; console.log('mapped', mapped); 

newobj = {}; newobj [oldObj.name] = oldObj.salary

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM