2016-08-06 8 views
2

Das Standardobjekt ist:Kopieren ein Objekt auf ein anderes Objekt mit spezifischer Bedingung

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

Meine Frage ist, wie man ein anderes Objekt mit dieser Formatierung kopiert das?

var employee = { 
    'Hermione': 1000 
}; 

Ich habe versucht:

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

UPDATE:

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

Was ich erreichen möchte:

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

Antwort

3

Haben Sie eine Reihe von denen, Objekte? der Fall Für einzelnes Objekt ist ziemlich einfach:

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

oder für modernen Browser:

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

Update

für Array von Objekten:

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);

für ältere Browser:

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

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

1

sollten Sie verwenden Array.prototype.filter Oder Array.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);