Я хочу скопировать сотрудника на нового сотрудника и не указывать на старого сотрудника.
Я пытаюсь использовать:
newEmployees.assign([{}].employees); <br>
newEmployees = [{...employees}]; <br>
Они указывают на старого сотрудника.
const employees = [
{
"id": "1001",
"firstname": "Luke",
"lastname": "Skywalker",
"company": "Walt Disney",
"salary": "40000"
},
{
"id": "1002",
"firstname": "Tony",
"lastname": "Stark",
"company": "Marvel",
"salary": "1000000"
},
{
"id": "1003",
"firstname": "Somchai",
"lastname": "Jaidee",
"company": "Love2work",
"salary": "20000"
},
{
"id": "1004",
"firstname": "Monkey D",
"lastname": "Luffee",
"company": "One Piece",
"salary": "9000000"
}
];
let newEmployees = [{}];
newEmployees[0] = employees[3]; // assign
employees[3]['firstname'] = 'Arhus'; // change old employees
console.log(newEmployees); //firstname: 'Arhus' - shows employees content
Огромное спасибо.
Просто используйте спред при назначении значения, подобного этому
const employees = [
{
"id": "1001",
"firstname": "Luke",
"lastname": "Skywalker",
"company": "Walt Disney",
"salary": "40000"
},
{
"id": "1002",
"firstname": "Tony",
"lastname": "Stark",
"company": "Marvel",
"salary": "1000000"
},
{
"id": "1003",
"firstname": "Somchai",
"lastname": "Jaidee",
"company": "Love2work",
"salary": "20000"
},
{
"id": "1004",
"firstname": "Monkey D",
"lastname": "Luffee",
"company": "One Piece",
"salary": "9000000"
}
];
let newEmployees = [{}];
newEmployees[0] = { ...employees[3] };
employees[3]['firstname'] = 'Arhus'; // change employee
console.log(newEmployees); //firstname is still Monkey D
При назначении значения вы можете использовать Object.assign
или Object.clone
Рассмотрим следующий фрагмент:
const employees = [
{
"id": "1001",
"firstname": "Luke",
"lastname": "Skywalker",
"company": "Walt Disney",
"salary": "40000"
},
{
"id": "1002",
"firstname": "Tony",
"lastname": "Stark",
"company": "Marvel",
"salary": "1000000"
},
{
"id": "1003",
"firstname": "Somchai",
"lastname": "Jaidee",
"company": "Love2work",
"salary": "20000"
},
{
"id": "1004",
"firstname": "Monkey D",
"lastname": "Luffee",
"company": "One Piece",
"salary": "9000000"
}
];
let newEmployees = [{}];
newEmployees[0] = Object.assign({}, employees[3]);
employees[3]['firstname'] = 'Arhus';
console.log(newEmployees);
Я понимаю, что вы хотите скопировать значение объекта и не хотите использовать stringify. Скручивание объекта и его анализ в JSON - это один из способов, клонирование объекта - это еще один метод, и я считаю, что распространение также работает.
Но если вы предпочитаете удобство, вы можете захотеть взглянуть на библиотеку lodash library _.clone и _.clonedeep.
Также, если вы хотите прочитать больше, обратитесь:
Просто используйте .map
и распространение объекта:
const employees = [
{
"id": "1001",
"firstname": "Luke",
"lastname": "Skywalker",
"company": "Walt Disney",
"salary": "40000"
},
{
"id": "1002",
"firstname": "Tony",
"lastname": "Stark",
"company": "Marvel",
"salary": "1000000"
},
{
"id": "1003",
"firstname": "Somchai",
"lastname": "Jaidee",
"company": "Love2work",
"salary": "20000"
},
{
"id": "1004",
"firstname": "Monkey D",
"lastname": "Luffee",
"company": "One Piece",
"salary": "9000000"
}
];
const newEmployees = employees.map(employee => ({...employee}));
employees[3].firstname = 'Arhus';
console.log(newEmployees[3]);
console.log(employees[3]);